【发布时间】:2018-07-19 16:10:12
【问题描述】:
我有一个执行安装所需例程的类库。从我所研究的一切来看,我相信我的设置是正确的。但是,该例程绝对不会记录任何内容。这是我所拥有的:
我已添加类库项目作为对宿主项目的引用。
-
在我的类库中,我有以下内容:
private static readonly ILog Log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);public InstallDLL() { Log.Error("Where are you goinng?"); } 在宿主应用程序中,我在 AssemblyInfo.cs 类中添加了以下行:
[assembly: log4net.Config.XmlConfigurator(Watch = true)]-
最后,这是我的 app.config 文件的内容:
<configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/> </configSections> <log4net> <appender name="TestAppender" type="log4net.Appender.RollingFileAppender" > <file value=".\Log Directory\MyTestAppender.log" /> <encoding value="utf-8" /> <appendToFile value="true" /> <rollingStyle value="Date" /> <rollingStyle value="Size" /> <maxSizeRollBackups value="5" /> <maximumFileSize value="2MB" /> <staticLogFileName value="true" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%M %C] - %message%newline" /> </layout> </appender> <root> <level value="ALL" /> <!-- If the following line is not included the log file will not be created even if log4net is configured with this file. --> <appender-ref ref="TestAppender" /> </root> </log4net> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /> </startup> </configuration>
我必须遗漏一些东西,但是什么?请记住,主机应用程序的日志记录工作正常...
**** 编辑 ****************************************** ******************************
我想我可能知道这里发生了什么。此项目生成的 .dll 文件在宿主项目运行之前运行,因为它是安装脚本的一部分。我认为宿主项目必须先运行才能初始化 log4net 配置。当我从主机应用程序而不是从安装程序包中调用 .dll 文件中的方法时,log4net 日志记录工作得很好。有谁知道这是否是根本原因,我该如何解决?
【问题讨论】:
-
不是重复的。我已经将程序集引用添加到 AssemblyInfo.cs 文件中。
-
在你的应用入口处添加
log4net.Config.XmlConfigurator.Configure();。以static void Main(string[] args)方法为例。 -
@Peska 没有影响。 :(
-
编辑后:使用相同的
Configure方法,如上所述。将您的 log4net 配置移动到一个单独的文件中,例如log4net.config,然后像这样使用它:XmlConfigurator.Configure(new FileInfo("log4net.config")); -
@Peska - 为什么你认为这会对这个问题产生不同的影响?