Log4Net 对于 Web 应用程序是安全的,因为我知道 log4net 是线程安全的,但它不是进程安全的。在这种情况下,我们不能使用单个文件来写入日志。还有其他解决方案吗?
问问题
385 次
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 回答