Log4net is working fine on local but on Azure, it only creates files and headers. No logs are written to file. In error it says file is used by another program, I have added . It creates all logs on local.
Framework: .net 4.5, Log4net version : 2.0.3
web.config:
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>
<appSettings>
<add key="log4net.Internal.Debug" value="true"/>
</appSettings>
<log4net>
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<param name="File" value="D:\home\site\wwwroot\log\ErrorLog.log" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%n %d [%t] %-5p %c %m%n" />
</layout>
</appender>
<appender name="ALogger" type="HeaderOnceAppender">
<file type="log4net.Util.PatternString" value="D:\home\site\wwwroot\log\A\ALogger_.csv" />
<appendToFile value="true" />
<preserveLogFileNameExtension value="true" />
<rollingStyle value="Date" />
<datePattern value="dd-MM-yyyy-HH" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<header value="Connection Id,Source,DateTime,Event,Logger Source,Stack trace" />
<conversionPattern value="%n%message,%stacktracedetail{5}" />
</layout>
</appender>
<appender name="BLogger" type="HeaderOnceAppender">
<file type="log4net.Util.PatternString" value="D:\home\site\wwwroot\log\B\BLogger_.csv" />
<appendToFile value="true" />
<preserveLogFileNameExtension value="true" />
<rollingStyle value="Date" />
<datePattern value="dd-MM-yyyy" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<header value="Process,Message,DateTime" />
<conversionPattern value="%n%message" />
</layout>
</appender>
<root>
<level value="All" />
<appender-ref ref="LogFileAppender" />
</root>
<logger name="ALogger" additivity="False">
<level value="All" />
<appender-ref ref="ALogger" />
</logger>
<logger name="BLogger" additivity="False">
<level value="All" />
<appender-ref ref="BLogger" />
</logger>
</log4net>
</configuration>
Appender class:
public class HeaderOnceAppender : RollingFileAppender
{
protected override void WriteHeader()
{
if (LockingModel.AcquireLock().Length == 0)
{
base.WriteHeader();
}
}
}
public class xyzOperationLogger
{
public readonly static ILog ALogger;
public readonly static ILog BLogger;
public readonly static ILog System;
static xyzOperationLogger()
{
System = LogManager.GetLogger("System");
ALogger = LogManager.GetLogger("ALogger");
BLogger = LogManager.GetLogger("BLogger");
log4net.Config.XmlConfigurator.Configure();
}
}
Log4net Logs: log4net: Opening file for writing [D:\home\site\wwwroot\log\ErrorLog.log] append [True] log4net:ERROR [FileAppender] ErrorCode: GenericFailure. Unable to acquire lock on file D:\home\site\wwwroot\log\ErrorLog.log. The process cannot access the file 'D:\home\site\wwwroot\log\ErrorLog.log' because it is being used by another process. log4net: Created Appender [LogFileAppender]
log4net: Searched for existing files in [D:\home\site\wwwroot\log\A]
log4net: curSizeRollBackups starts at [0]
log4net: [20-04-2018] vs. [20-04-2018]
log4net: Opening file for writing [D:\home\site\wwwroot\log\A\ALogger_.csv] append [True]
log4net: Created Appender [A]
log4net: Adding appender named [A] to logger [ALogger].
same error for BLogger:
log4net:ERROR [HeaderOnceAppender] ErrorCode: GenericFailure. Unable to acquire lock on file D:\home\site\wwwroot\log\B\BLogger_.csv. The process cannot access the file 'D:\home\site\wwwroot\log\B\BLogger_.csv' because it is being used by another process.