zoukankan      html  css  js  c++  java
  • 当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]
    
  • 相关阅读:
    美团面试准备
    SSM实战项目——Java高并发秒杀API
    接口和抽象类有什么区别
    Java中static、final、static final的区别
    多线程面试题
    idea新建maven项目没有src目录
    聊聊MyBatis缓存机制
    Java 8系列之重新认识HashMap
    数据库SQL实战练习
    牛客网刷题(一)
  • 原文地址:https://www.cnblogs.com/jinzhao/p/2597566.html
Copyright © 2011-2022 走看看