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的区别?
作者:Gerry Ge
出处:https://www.cnblogs.com/gerryge/archive/2013/02/01/Gerry.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应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构