You can use log4net, I suggest to log separate for each Job.
Before to start scheduler:
var location = System.Reflection.Assembly.GetExecutingAssembly().Location;
log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo(location + ".config"));
In each class that extends IJob (so, in each Job):
var logger = log4net.LogManager.GetLogger("TestJobLogger");
Where obviously "TestJobLogger"
is different for each Job.
In the App.config
insert this, one <logger>
and one <appender>
for each Job you have:
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
...
<log4net>
<appender name="AppenderTestJob" type="log4net.Appender.RollingFileAppender">
<appendToFile value="true" />
<rollingStyle value="Composite" />
<datePattern value=".yyyyMMdd-HH" />
<param name="ImmediateFlush" value="true" />
<maxSizeRollBackups value="10" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<file type="log4net.Util.PatternString" value="C:\PathToSaveFile\" />
<datePattern value="'test.'yyyyMMdd'.log'" />
<staticLogFileName value="false" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date{dd-MM-yyyy HH:mm:ss.fff} [%t] [%-5p] (%c) - %m%n" />
</layout>
</appender>
<root>
<level value="INFO" />
</root>
<logger name="TestJobLogger" additivity="false">
<level value="INFO" />
<appender-ref ref="AppenderTestJob" />
</logger>
</log4net>
Now, you can log simply with logger.Debug("TESTTTTTT");
.