0

Log4Net 对于 Web 应用程序是安全的,因为我知道 log4net 是线程安全的,但它不是进程安全的。在这种情况下,我们不能使用单个文件来写入日志。还有其他解决方案吗?

4

1 回答 1

0

假设您正在使用文件附加程序,那么 DEFAULT 行为确实不会像您所说的那样是进程安全的。但是还有另外两个选择。

来自 Log4Net 文档:

FileAppender 通过 LockingModel 属性支持可插入的文件锁定模型。FileAppender.ExclusiveLock 实现的默认行为是获取文件的独占写入锁,直到此附加程序关闭。替代模型仅在 appender 写入日志事件 (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);
于 2012-10-31T00:45:34.277 回答