Log4net for windows service
12,678
Solution 1
Try This:
<log4net>
<root>
<level value="Error" />
<appender-ref ref="RollingLogFileAppender" />
</root>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="<FilePath>" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<maxSizeRollBackups value="14" />
<countDirection value="1" />
<maximumFileSize value="4096KB" />
<lockingModel type="log4net.Appender.FileAppender.MinimalLock" />
<staticLogFileName value="true" />
<PreserveLogFileNameExtension value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%newlineDate[%date] ThreadID[%thread] Level[%-5level] Logger[%logger]] - %message%newline" />
</layout>
</appender>
</log4net>
In addition to this there should be a entry of Log4Net in Config Section, Example:
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
</configSections>
</configuration>
In your Logger class have ILog
variable and in constructor configure the logger like this:
private ILog log;
public Log4NetLogger()
{
log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
log4net.Config.XmlConfigurator.Configure();
}
Solution 2
It may be user privileges problem.
Windows Service often starts with NetworkService credential which has no write privileges.
You can add write and midify privilege for C:\CE folder or use another Appender (like EventLog Appender)
good luck
Author by
Sanjeev
Updated on June 14, 2022Comments
-
Sanjeev almost 2 years
This is first time I am using
Log4net
. It doesn't show any errors, but is not writing to file. I added following in myAppConfig
file:<configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" requirePermission="false"/> </configSections> <log4net> <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%5level [%thread] (%file:%line) - %message%newline"/> </layout> </appender> <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="C:\CE\FileControllerLog.txt"/> <layout type="log4net.Layout.PatternLayout"> <!--<param name="ConversionPattern" value="%d [%t] %-5p %c %m%n"/>--> <param name="ConversionPattern" value="%d %m%n"/> </layout> <appendToFile value="true"/> <rollingStyle value="Composite"/> <maxSizeRollBackups value="2"/> <maximumFileSize value="10MB"/> <staticLogFileName value="true"/> </appender> <logger name="FileControllerLog"> <level value="INFO"/> <appender-ref ref="LogFileAppender" /> <appender-ref ref="ConsoleAppender"/> </logger>
[assembly: log4net.Config.XmlConfigurator(Watch = true)] //added in assembly info file
and in code:
ILog logger = log4net.LogManager.GetLogger("FileControllerLog"); logger.Info("Method starts");
It's not logging.
-
Sanjeev almost 11 yearsThe issue was with the config file. The project was not reading config file. to solve this, i added [assembly: log4net.Config.XmlConfigurator(ConfigFile = @"fullpath\App.config", Watch = true)] in assembly file. how can i give root path directly in assembly file
-
Abhishek Jain almost 11 yearsCheck this, it will definately going to solve your problem: logging.apache.org/log4net/release/manual/…