log4net.xml我的解决方案的根目录中有一个文件。用于复制到 bin 的文件属性设置为Always copy。我已确认该文件已复制到 bin 目录。
在配置中,我设置了一个文件附加器(基本上是文档中的复制粘贴):
<appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
<file value="Logs\\log.log" />
<appendToFile value="true" />
<rollingStyle value="Date"/>
<datePattern value="yyyyMMdd-HHmmss" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
Run Code Online (Sandbox Code Playgroud)
我也有这条线AssemblyInfo.cs
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.xml", Watch = true)]
Run Code Online (Sandbox Code Playgroud)
记录器在代码文件中的设置如下:
private static ILog LOGGER = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
Run Code Online (Sandbox Code Playgroud)
我也将log4net.Config.XmlConfigurator.Configure();(也带有FileInfo参数)添加到了 main 中Program.cs。
但是,如果我执行该程序,则不会创建预期的日志文件。我怀疑 log4net 甚至没有读取配置文件。
我错过了什么吗?从 VS 内部执行也不起作用(尽管它以某种方式拾取了 Console Appender 部分)。
类似的帖子:
提前致谢。
编辑
因此,我通过从文档中删除复制/粘贴部分来在 VS 中实现此功能:
<root>
<level value="DEBUG" />
<appender-ref ref="A1" />
</root>
Run Code Online (Sandbox Code Playgroud)
但是从exe运行还是不行
我解决了这个问题,我不知道这是否是正确的修复 - 而且我不知道为什么它在 VS 中工作一次 - 但我认为这只是配置文件配置不正确。
首先,由于 中有文件的声明,AssemblyInfo.cs因此不需要log4net.Config.XmlConfigurator.Configure();.
其次,我只需将两个附加程序添加到根标签中:
<root>
<level value="DEBUG" />
<appender-ref ref="A1" />
<appender-ref ref="RollingFile" />
</root>
Run Code Online (Sandbox Code Playgroud)
就是这样。VS在控制台上输出以及文件,exe输出到文件。
| 归档时间: |
|
| 查看次数: |
3131 次 |
| 最近记录: |