Loading

log4net用在WebServices中

最近写一个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的区别?

 

 

 

posted @ 2013-02-01 14:39  GerryGe  阅读(705)  评论(1编辑  收藏  举报