log4net如何用代码配置生产多个日志文件

flyingroc8139 2012-09-06 11:29:41
本人一直做Java开发,因项目需要用C#开发插件需要用到log4net,希望尽量不使用配置文件通过代码方式完成配置,网上有很多类似代码,但都无法实现对不同的logger指定不同的文件,比如我设置三个logger,分别对应三个不同的文件,而我的应用会根据需要调用不同的logger各自输出文本到对应的文件,这种需求用配置文件方式很好实现,但用代码方式,始终会在其他日志文件中输出内容,大概原因也知道是由于多个logger都是属于root,调用log4net.LogManager.GetLogger("xxx")时其实会把全部的logger都调用起来,请问有熟悉log4net的同学可以帮忙指点一下吗,谢谢。
...全文
585 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
Java之所以时髦使用 Log4Net,是因为它们的开发调试环境太差的缘故。 在微软的 IDE 开发调试环境下,早在20年前就有不错的 Debug 和 Trace 功能使用。只是新人没有学习过而已。在Visual Studio下自己定义调试监听器,可以参考:http://msdn.microsoft.com/zh-cn/library/4y5y10s7(v=vs.110).aspx
普世编程技术 2013-12-22
  • 打赏
  • 举报
回复
<logger name="Livan's Logger"> <level value="ALL" /> <appender-ref ref="Loging" /> <appender-ref ref="EventLoging"/> <appender-ref ref="ErrorLoging" /> </logger> root是全部默认的, 其它的你要自己写name的logger
emailtome 2013-12-22
  • 打赏
  • 举报
回复
楼上的方法可行 也可以这样 http://stackoverflow.com/questions/308436/log4net-programmatically-specify-multiple-loggers-with-multiple-file-appenders public static class Helper { // Set the level for a named logger public static void SetLevel(string loggerName, string levelName) { ILog log = LogManager.GetLogger(loggerName); var l = (Logger)log.Logger; l.Level = l.Hierarchy.LevelMap[levelName]; } // Add an appender to a logger public static void AddAppender(string loggerName, IAppender appender) { ILog log = LogManager.GetLogger(loggerName); var l = (Logger)log.Logger; l.AddAppender(appender); } // Create a new file appender public static IAppender CreateFileAppender(string name, string fileName) { var appender = new FileAppender {Name = name, File = fileName, AppendToFile = true}; var layout = new PatternLayout { ConversionPattern = "%date [%thread] %level %logger - %message%newline" }; layout.ActivateOptions(); appender.Layout = layout; appender.ActivateOptions(); return appender; } } public class Test { private static readonly ILog Log = LogManager.GetLogger(typeof(Test)); public Test() { Helper.SetLevel("pen4net.Test", "INFO"); Helper.AddAppender("pen4net.Test", Helper.CreateFileAppender("Testxx", @"C:\\fileName.log")); Log.Info("helloworld"); } }

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧