转自:http://www.cnblogs.com/geqinggao/archive/2013/02/01/Gerry.html
最近写一个WebServices要记录log,首当想到的当然是log4net.dll,我把原来WinFrom的配置拷贝过来,log记不了,嘛问题呢?
于是百度,Google,不少文章呢,有的说WebServices用不了log4net,有的贴出配置照操作还是不能记,哥来兴趣了,log4net不会这么不给力吧?研究了一番答案是否定的,log4net还是很给力的。
log4net用在WebServices上有几个地方需要配置:
1.配置Web.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>
<log4net>
<appender name="ErrorRollingFileAppender" type="log4net.Appender.RollingFileAppender,log4net">
<param name="File" value="logs/error.log" />
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="yyyy.MM.dd" />
<param name="StaticLogFileName" value="true" />
<filter type="log4net.Filter.LevelRangeFilter">
<acceptOnMatch value="true" />
<levelMin value="ERROR" />
<levelMax value="FATAL" />
</filter>
<maximumFileSize value="15MB" />
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%newline %d [%t] %-5p %c: %m%n" />
</layout>
</appender>
<appender name="InfoRollingFileAppender" type="log4net.Appender.RollingFileAppender,log4net">
<param name="File" value="logs/info.log" />
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="yyyy.MM.dd" />
<param name="StaticLogFileName" value="true" />
<filter type="log4net.Filter.LevelRangeFilter">
<acceptOnMatch value="true" />
<levelMin value="DEBUG" />
<levelMax value="WARN" />
</filter>
<maximumFileSize value="15MB" />
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%newline %d [%t] %-5p %c: %m%n" />
</layout>
</appender>
<root>
<priority value="DEBUG" />
<appender-ref ref="ErrorRollingFileAppender" />
<appender-ref ref="InfoRollingFileAppender" />
</root>
</log4net>
</configuration>
=====================
配置好了那该怎么使用呢?相信大家都会。
在.cs文件中加上下面:
private static ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
在.cs文件的构造函数中加上
XmlConfigurator.Configure();
然后就可以用下面方式调用了:
log.Info("log Info.");//记录在logs/info.log
log.Error("log Error.");//记录在logs/error.log
log.Fatal("log Fatal.");//记录在logs/error.log
log.Debug("log Debug.");//记录在logs/info.log
2.配置权限
当初我无法写log的问题,是因为没有配置IIS_IUSRS权限。如果你的Web.config都按照第1步配置好了,如果还不能记log,就在IIS中右键你的WebServices→Edit Permission...→Security找到你的IIS_IUSRS点击Edit...勾上Full control然后Apply.
如果上面两步你都完成了,恭喜你logs文件夹就会神奇的出现了。
小小疑问,上面的图片中error信息都是按天分开的,但是info.log是和在一起的。我在Window Services的App.config中同样的配置,info.log也是每天分开的,
不知道这是不是Web Services和Window Services的区别?