log4net如何用代码配置生产多个日志文件
本人一直做Java开发,因项目需要用C#开发插件需要用到log4net,希望尽量不使用配置文件通过代码方式完成配置,网上有很多类似代码,但都无法实现对不同的logger指定不同的文件,比如我设置三个logger,分别对应三个不同的文件,而我的应用会根据需要调用不同的logger各自输出文本到对应的文件,这种需求用配置文件方式很好实现,但用代码方式,始终会在其他日志文件中输出内容,大概原因也知道是由于多个logger都是属于root,调用log4net.LogManager.GetLogger("xxx")时其实会把全部的logger都调用起来,请问有熟悉log4net的同学可以帮忙指点一下吗,谢谢。 --------------------编程问答-------------------- <logger name="Livan's Logger"><level value="ALL" />
<appender-ref ref="Loging" />
<appender-ref ref="EventLoging"/>
<appender-ref ref="ErrorLoging" />
</logger>
root是全部默认的, 其它的你要自己写name的logger --------------------编程问答-------------------- Java之所以时髦使用 Log4Net,是因为它们的开发调试环境太差的缘故。
在微软的 IDE 开发调试环境下,早在20年前就有不错的 Debug 和 Trace 功能使用。只是新人没有学习过而已。在Visual Studio下自己定义调试易做图,可以参考:http://msdn.microsoft.com/zh-cn/library/4y5y10s7(v=vs.110).aspx --------------------编程问答-------------------- 楼上的方法可行
也可以这样 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");
}
}
补充:.NET技术 , C#