当前位置:编程学习 > C#/ASP.NET >>

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#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,