Log4Net对于web应用程序来说是安全的,因为我知道log4net是线程安全的,但它不是进程安全的。在这种情况下,我们不能使用单个文件来写入日志。有没有其他的解决方案?
发布于 2012-10-31 08:45:34
假设您正在使用文件附加器,那么正如您所说的,默认行为将不是进程安全的。然而,还有另外两种选择。
在Log4Net文档中:
通过LockingModel属性,FileAppender支持可插拔的文件锁定模型。由FileAppender.ExclusiveLock实现的默认行为是获取文件的独占写锁,直到关闭此附加器。替代模型仅在附加器正在写入日志记录事件(FileAppender.MinimalLock)或使用命名的系统范围互斥锁(FileAppender.InterProcessLock)进行同步时才持有写锁。
配置行如下所示:
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />我认为独占是性能最好的。
尽管您没有这样要求,但您可以在配置中使用以下语法以编程方式设置文件/路径:
<file type="log4net.Util.PatternString" value="%property{LogName}" />然后在您的设置中使用以下命令设置LogName vi C#:
log4net.GlobalContext.Properties["LogName"] = fullPathToLogfile + afileName ;
var configInfo = new FileInfo("configfilename.config");
log4net.Config.XmlConfigurator.Configure(configInfo);https://stackoverflow.com/questions/12340736
复制相似问题