当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博客园博客,原文链接:http://www.cnblogs.com/jinzhao/archive/2012/07/18/2597566.html,如需转载请自行联系原作者

相关文章
|
4月前
|
开发框架 .NET Docker
【Azure 应用服务】App Service .NET Core项目在Program.cs中自定义添加的logger.LogInformation,部署到App Service上后日志不显示Log Stream中的问题
【Azure 应用服务】App Service .NET Core项目在Program.cs中自定义添加的logger.LogInformation,部署到App Service上后日志不显示Log Stream中的问题
|
4月前
|
运维 监控 安全
系统日志规范问题之日志打印等级的DEBUG的定义如何解决
系统日志规范问题之日志打印等级的DEBUG的定义如何解决
|
5月前
|
监控 前端开发 安全
系统日志使用问题之DEBUG级别的日志主要用于什么阶段
系统日志使用问题之DEBUG级别的日志主要用于什么阶段
|
4月前
|
开发框架 监控 .NET
【Azure 应用程序见解】在Docker中运行的ASP.NET Core应用如何开启Application Insights的Profiler Trace呢?
【Azure 应用程序见解】在Docker中运行的ASP.NET Core应用如何开启Application Insights的Profiler Trace呢?
|
4月前
|
Java C++
【Azure Function】开启Azure Function输出详细Debug日志 ( --verbose)
【Azure Function】开启Azure Function输出详细Debug日志 ( --verbose)
|
6月前
|
SQL 运维 关系型数据库
|
7月前
|
监控 应用服务中间件
idea debug模式启动Tomcat报错:Error running ‘tomcat8‘: java.net.SocketException “socket closed“
idea debug模式启动Tomcat报错:Error running ‘tomcat8‘: java.net.SocketException “socket closed“
225 0
|
7月前
|
SQL 消息中间件 缓存
Flink SQL中使用DEBUG模式来输出详细的日志信息,
Flink SQL中使用DEBUG模式来输出详细的日志信息,
311 0
|
C++
无法将“obj\Debug\net5.0\xxx.dll”复制到“bin\Debug\net5.0\xxx.dll”。超出了重试计数 10。失败。
无法将“obj\Debug\net5.0\xxx.dll”复制到“bin\Debug\net5.0\xxx.dll”。超出了重试计数 10。失败。
110 0
|
Java 程序员
【日志级别】log4j的8个日志级别(OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、ALL)
【日志级别】log4j的8个日志级别(OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、ALL)
1866 0