C# 在两个不同的文件中写入日志文件

C# 在两个不同的文件中写入日志文件,c#,log4net,C#,Log4net,我的应用程序运行在定制的客户机框架上,客户机框架使用log4net记录自己的日志文件。我们(我们的应用程序)必须使用相同的log4net将日志文件记录在我们自己的路径(比如我们的自定义路径)中。目前,我们的日志文件已创建,但日志未写入该文件。它正在客户端框架日志文件中写入 我搜索了很多网站的链接 帮助我以编程方式配置log4net配置, 我的日志语句仍然没有写入日志文件中 public class TraceLog { private string message =

我的应用程序运行在定制的客户机框架上,客户机框架使用log4net记录自己的日志文件。我们(我们的应用程序)必须使用相同的log4net将日志文件记录在我们自己的路径(比如我们的自定义路径)中。目前,我们的日志文件已创建,但日志未写入该文件。它正在客户端框架日志文件中写入

我搜索了很多网站的链接 帮助我以编程方式配置log4net配置, 我的日志语句仍然没有写入日志文件中

 public class TraceLog
    {
        private string message = string.Empty;        
        private static ILog ILogger = null; 
        private static TraceLog instance = new TraceLog();
        private TraceLog()
        {
            SetLevel("Log4net.MainForm", "ALL");
            AddAppender("Log4net.MainForm", CreateFileAppender("FileAppender", "C:\\mylog.log"));
        }        
        public static TraceLog Instance
        {
            get
            {
                return instance;
            }
        }      
        public void Debug(string logMessage)
        {
            message = PrepareLog(logMessage);
            ILogger.Debug(message);
        }
        protected string PrepareLog(string logMessage)
        {
            string message = GetFileMethodLineNumberInfo();
            message += logMessage;
            return message;
        }      
        protected string GetFileMethodLineNumberInfo()
        {
            StackTrace stackTrace = new StackTrace(true);
            // The position 3 is relative to the index of the specified method
            StackFrame stackFrame = stackTrace.GetFrame(3);
            return (stackFrame.GetMethod().DeclaringType.Name
                + "/" + stackFrame.GetMethod().Name
                + "/" + stackFrame.GetFileLineNumber()
                + ":");
        }
        private static void SetLevel(string loggerName, string levelName)
        {
            ILogger = LogManager.GetLogger(loggerName);
            log4net.Repository.Hierarchy.Logger l = (log4net.Repository.Hierarchy.Logger)ILogger.Logger;
            l.Level = l.Hierarchy.LevelMap[levelName];
        }        
        private static void AddAppender(string loggerName, IAppender appender)
        {
            ILogger = LogManager.GetLogger(loggerName);
            log4net.Repository.Hierarchy.Logger l = (log4net.Repository.Hierarchy.Logger)ILogger.Logger;
            l.AddAppender(appender);
        }
        private static IAppender CreateFileAppender(string name, string fileName)
        {
            FileAppender appender = new FileAppender();
            appender.Name = name;
            appender.File = fileName;
            appender.AppendToFile = true;
            //PatternLayout layout = new PatternLayout();

            //layout.ConversionPattern = "%d [%t] %-5p %c [%x] - %m%n";
            //layout.ActivateOptions();
            //appender.Layout = layout;
            appender.ActivateOptions();
            return appender;
        }

    }
}
尝试调试log4net:


我解决此问题的方法:

public static void AddAppenderToLogger(string loggerName, string fileName) {
    FileAppender appender = new FileAppender();
    appender.Name = string.Format("appender_{0}", loggerName);
    appender.File = fileName;
    appender.AppendToFile = true;
    appender.Layout = new PatternLayout("%date - %message%newline");
    appender.LockingModel = new log4net.Appender.FileAppender.MinimalLock();
    appender.ActivateOptions();
    ILoggerRepository repository = LogManager.CreateRepository(string.Format("repository_{0}",loggerName));
    log4net.Config.BasicConfigurator.Configure(repository, appender);
}
public static ILog GetLogger(string loggerName){
    return LogManager.GetLogger(string.Format("repository_{0}", loggerName), loggerName);
}

//Using in application code:
    static void Main(string[] args) {
        AddAppenderToLogger("test", @"c:\testLog.txt");
        ILog log = GetLogger("test");
        log.Info("TestRecord");           
    }

嗨,Despart,谢谢你的信息。但是我没有使用log4net的.config文件。我正在做配置文件。