当Log4net无法工作时启用trace(How to debug log4net while its not woking)
Log4net罢工的情况不知道有多少人碰到?Zzk里没有,stackoverflow上也不是很多,引入log4net的自述它不是一个可靠地log组件而是一个高效fail stop的组件,fail stop就是当log失败时就停下,是运行友好的,下面调适的实践希望能给大家一点帮助。
常年依赖Log4net,当它罢工的时候哥迷茫了,总要有错误信息啊,没错信息怎么调适,让我迷茫了两次,如果没了它我们怎么办?
以前一直知道.net的trace很强也没去了解,这次没办法了,不看不知道,几行配置就可以让trace输出到文本,如下:
< system.diagnostics > < trace autoflush="true"> < listeners > < add name="textWriterTraceListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="C:\log4net.txt" /> </ listeners > </ trace > </ system.diagnostics > |
这里要放在system.web节后面,不知道为什么感觉没道理啊。
如果完全替换到trace似乎也不错,不过还是喜欢log4net,它也很强大,调适之前介绍下它的log类,名叫loglog,哈哈没错名字很有意思也很合适,这个是它内部记录错误的类,最终调用方法如下
private static void EmitOutLine( string message) { try { #if NETCF Console.WriteLine(message); //System.Diagnostics.Debug.WriteLine(message); #else Console.Out.WriteLine(message); Trace.WriteLine(message); #endif } catch { // Ignore exception, what else can we do? Not really a good idea to propagate back to the caller } } |
可以看到它放到trace里去了,那么接下来只要把log4net的错误跟上面的trace搭起来就可以了。
这里要先打开log4net内部的debug功能,手动代码设置是:log4net.Util.LogLog.InternalDebugging = true;
当然也可以在配置里appsetting节加入如下代码:
<add key="webpages:Version" value="1.0.0.0"/>
这样debug信息会输出到C:\log4net.txt文件中了。
下面是我的部分错误信息:
log4net:ERROR [RollingFileAppender] ErrorCode: GenericFailure. Unable to acquire lock on file E:\WebSites\CNBlogsZzk\src\ReleaseWeb\logs\Site.log. The process cannot access the file 'E:\WebSites\CNBlogsZzk\src\ReleaseWeb\logs\Site.log' because it is being used by another process. Quartz.Impl.StdSchedulerFactory: 2012-07-18 15:26:34 [1] INFO Quartz.Impl.StdSchedulerFactory - Default Quartz.NET properties loaded from embedded resource file log4net: Opening file for writing [E:\WebSites\CNBlogsZzk\src\ReleaseWeb\logs\Site.log] append [True] |
作者:today4king
出处:https://www.cnblogs.com/jinzhao/archive/2012/07/18/2597566.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2011-07-18 Mock HttpContext in TDD的几种简单应用