问题
I've written a C# dll - foo.dll - that uses log4net for logging. The dll is then used in a C++ application via a C++\CLI wrapper. The C++ application works perfectly, however the log file is not created. When I use this dll in a testing C# application (that uses the original C# dll) the log file is create without problems.
This configuration is set in foo.dll.config:
<configSections>
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
<root>
<level value="DEBUG" />
<appender-ref ref="RollingFileAppender" />
</root>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="D:\\foo.log" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="5" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %level - %message%newline" />
</layout>
</appender>
</log4net>
Other configuration are read without problems from the foo.dll.config file and the C++ application has writing permissions for the log directory.
Any idea what I'm missing here?
回答1:
I re-write my comment as answer.
You must try to define an app.config file for your C++ application (not only for the dll itself), and include on it the log4net configuration.
来源:https://stackoverflow.com/questions/24436406/c-sharp-application-log4net-log-file-not-created-when-used-in-c-cli