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