我在应用程序中使用Log4Net时遇到问题。这是我的app.config文件...
<configuration>
<log4net>
<root>
<level value="INFO"/>
<appender-ref ref="FileAppender" />
</root>
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<file value="mylogfile.txt" />
<appendToFile value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %level %logger - %message%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="INFO" />
<levelMax value="FATAL" />
</filter>
</appender>
</log4net>
<configSections>
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"
/>
rest of app.config under here...
Run Code Online (Sandbox Code Playgroud)
这是我的Program.cs的顶部
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
Run Code Online (Sandbox Code Playgroud)
我在表单子类的顶部也有这个(这是上面的重复吗?)
private static readonly log4net.ILog log = log4net.LogManager.GetLogger
(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
Run Code Online (Sandbox Code Playgroud)
并且此代码在表单加载中(不执行任何操作)
log.Info("Initializing...");
log.Fatal("blah");
Run Code Online (Sandbox Code Playgroud)
记录器创建一个名为“ mylogfile.txt”的日志文件,但实际上未向其中写入任何内容。
我知道我做错了什么,但我无法轻易发现它是什么:(任何帮助都会很棒。
几秒钟后我自己就弄清楚了。app.config 是错误的(毫不奇怪,考虑到我写的)。
这是正在运行的 app.config 启动。
<configuration>
<configSections>
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"
/>
<--- other section groups here, you will have these too --->
</sectionGroup>
</configSections>
<log4net>
<root>
<level value="INFO"/>
<appender-ref ref="FileAppender" />
</root>
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<file value="mylogfile.txt" />
<appendToFile value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %level %logger - %message%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="INFO" />
<levelMax value="FATAL" />
</filter>
</appender>
</log4net>
Run Code Online (Sandbox Code Playgroud)
我罐装了
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
Run Code Online (Sandbox Code Playgroud)
并将其替换为 log4net.Config.XmlConfigurator.Configure(); (在这里,在 Program.cs 的主程序启动中调用它)。
static void Main()
{
log4net.Config.XmlConfigurator.Configure();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new frmMOEBackup());
}
Run Code Online (Sandbox Code Playgroud)
它有效!感谢所有看过我的问题的人:)