【问题】
用如下的步骤应用了Log4Net:
- 建立了一个公用的项目, 在里面引入了Log4net的Nuget package.
- 在公用的项目中建立了一个类,加上了Log4net的attribute.
[assembly: log4net.Config.XmlConfigurator(Watch = true)] namespace MyNamespace.Common { public class LogHelper { static LogHelper() { var logCfg = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + "log4net.config"); XmlConfigurator.ConfigureAndWatch(logCfg); } public static void WriteError(Type t, Exception ex) { log4net.ILog log = log4net.LogManager.GetLogger(t); log.Error("", ex); }
public static void WriteLog(Type t, string msg) { log4net.ILog log = log4net.LogManager.GetLogger(t); //log.Info(msg + "\r\n"); log.Info(msg); }
} } |
- 建立了一个新项目,然后引用这个公用项目。
- 在这个新项目中加入了log4net.config文件。
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> </configSections>
<log4net> <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <!--日志路径--> <param name= "File" value= "Log/"/> <!--是否是向文件中追加日志--> <param name= "AppendToFile" value= "true"/> <!--log保留天数--> <param name= "MaxSizeRollBackups" value= "10"/> <!--日志文件名是否是固定不变的--> <param name= "StaticLogFileName" value= "false"/> <!--日志文件名格式为:2008-08-31.log--> <param name= "DatePattern" value= "yyyy-MM-dd".log""/> <!--日志根据日期滚动--> <param name= "RollingStyle" value= "Date"/> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%n%date{HH:mm:ss,fff} [%-5level] %m" /> </layout> </appender>
<!-- 控制台前台显示日志 --> <appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender"> <mapping> <level value="ERROR" /> <foreColor value="Red, HighIntensity" /> </mapping> <mapping> <level value="Info" /> <foreColor value="Green" /> </mapping> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%n%date{HH:mm:ss,fff} [%-5level] %m" /> </layout>
<filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="Info" /> <param name="LevelMax" value="Fatal" /> </filter> </appender>
<root> <!--(高) OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL (低) --> <level value="all" /> <!--<appender-ref ref="ColoredConsoleAppender"/>--> <appender-ref ref="RollingLogFileAppender"/> </root> </log4net> </configuration> |
- 在新项目的文件中记Log.
LogHelper.WriteLog(typeof(MyClass), "here"); |
进行了上述的步骤后,程序运行的时候,并没有 Log产生。
【分析】
调试了一下,发现在实际运行的时候,Loger各个级别的输出都成false了。
这是怎么回事那?
最后发现程序输出路径下并没有log4net.config,这样的结果就是log4net无法找到配置文件,所以就默认都禁止输出了。
【解决方法】
在程序中将log4net.config设置为总是拷贝到输出目录。
这样,每次编译的时候,log4net.config就会被拷贝到程序的输出目录。
再运行程序的时候,就有log产生了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2012-02-02 DotNetZip使用简介
2012-02-02 SharePoint中的RPC调用
2012-02-02 dotNet中的多线程
2012-02-02 很好的一款监控web请求的工具,fiddler.
2012-02-02 Xpath特殊应用一例