所以我使用我公司的一个dll。
namespace LoggingSample
{
internal static class Log
{
private static ILogger s_log = LoggerRegistry.CreateLogger("ManagedLoggingSample");
static internal ILogger Logger
{
get { return s_log; }
}
}
class Program
{
static void Main(string[] args)
{
ILogProvider logProvider = new Logging.Provider.Log4netProvider("logging.config.xml") as ILogProvider;
LoggerConfig.registerLogInterface(logProvider);
Console.WriteLine("Initializing logging");
Log.Logger.message(SEVERITY.LOG_DEBUG, "Debug message 1");
// Add more logs
Log.Logger.message(SEVERITY.LOG_INFO, "Log info Message {0} {1}", 2, "I am an error logged message");
Log.Logger.debug("Debug Message 2");
Log.Logger.error("Error Log message {0} {1}", 4, "i am an error message");
Console.WriteLine("Done");
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
}
}
我的问题是,在控制台上,消息显示在Debug和Release中,只在没有调试器的情况下运行。
程序还在文件上输出文本,但没有调试器,文件为空; 任何人都知道这里可能出现什么问题?可能是设置问题?
.xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<log4net>
<root>
<level value="ALL" />
<appender-ref ref="RollingLogFileAppender" />
<appender-ref ref="ColoredConsoleAppender" />
</root>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="ManagedLoggingSample.log" />
<appendToFile value="false" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="2KB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" />
</layout>
</appender>
<appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
<mapping>
<level value="ERROR" />
<foreColor value="White" />
<backColor value="Red, HighIntensity" />
</mapping>
<mapping>
<level value="DEBUG" />
<backColor value="Green" />
</mapping>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<logger name="ManagedLoggingSample" >
<level value="ALL" />
<appender-ref ref="RollingLogFileAppender" />
</logger>
</log4net>
我忘了提到只有在没有调试器的Release中它没有在控制台上显示任何内容并且日志文件为空,调试的.exe工作正常。
答案 0 :(得分:0)
对于内部静态类Log,我提供了一个空的静态构造函数(static Log() { }
)。我认为这是一个优化问题,因为类是静态的,它是在调用之前创建的,现在因为我们有一个构造函数
它知道在调用时创建日志。如果有人有另一个答案,我很乐意听到。