使用Log4Net登录到多个文件

时间:2018-08-15 13:03:51

标签: c# log4net

因此,我正在使用log4net将日志记录功能添加到应用程序中。由于需要实例化多个记录器,因此我创建了一个类来设置记录器。每次需要创建一个新的日志记录实例时,我都会调用此方法并将其传递给必要的参数。

public class Logging
{
    /// <summary>
    /// Sets up a new logging instance
    /// </summary>
    public void Setup(string logName, log4net.Core.Level logLevel)
    {
        Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository();

        PatternLayout patternLayout = new PatternLayout
        {
            ConversionPattern = "%date [%thread] %-5level - %message%newline"
        };
        patternLayout.ActivateOptions();

        RollingFileAppender roller = new RollingFileAppender
        {
            Name = logName,
            AppendToFile = true,
            File = "path\\to\\log\\ " + logName + ".txt",
            Layout = patternLayout,
            MaxSizeRollBackups = 5,
            MaximumFileSize = "1GB",
            RollingStyle = RollingFileAppender.RollingMode.Size,
            StaticLogFileName = true,
            Threshold = logLevel                   
        };
        roller.ActivateOptions();
        hierarchy.Root.AddAppender(roller);

        //MemoryAppender memory = new MemoryAppender();
        //memory.ActivateOptions();
        //hierarchy.Root.AddAppender(memory);
        hierarchy.Name = logName;
        hierarchy.Root.Level = Level.Info;
        hierarchy.Configured = true;


    }
}

使用此代码,我可以像这样初始化和添加新的记录器:

        //in a certain context
        //loglevel is an assigned log level
        var fileName = "Client Execution Log";
        var logging = new Logging();
        logging.Setup(fileName, logLevel);
        var executionLog = log4net.LogManager.GetLogger(fileName);

         //in another context
         //loglevel is an assigned log level
        var fileName = "Server Response Log";
        var logging = new Logging();
        logging.Setup(fileName, logLevel);
        var serverLog = log4net.LogManager.GetLogger(fileName);

问题在于,只要我调用该方法写入日志serverLog.info("server responded 404"),它就会最终写入所有文件,而不是写入调用Setup时传递的文件。如何正确设置日志记录,以便每个日志记录实例仅写入传递给setup方法的自己的文件?

0 个答案:

没有答案