|
// --------------------------------------------------------------------------------------------------------------------
// <copyright file="Log4netHelper.cs" company="Catel development team">
// Copyright (c) 2008 - 2011 Catel development team. All rights reserved.
// </copyright>
// <summary>
// Log4net helper class.
// </summary>
// --------------------------------------------------------------------------------------------------------------------
using log4net.Appender;
using log4net.Core;
using log4net.Layout;
using log4net.Repository;
using log4net.Repository.Hierarchy;
namespace log4net
{
/// <summary>
/// Log4net helper class.
/// </summary>
public static class log4netHelper
{
#region Variables
/// <summary>
/// A value indicating whether the log is initialized.
/// </summary>
private static bool _initialized;
#endregion
/// <summary>
/// Initializes the log. It creates a rolling file appender and console appender with
/// default values.
/// </summary>
/// <param name="logFile">The log file.</param>
/// <remarks>
/// It is also possible to perform the initialization in the configuraton file.
/// </remarks>
public static void InitializeLog(string logFile)
{
if (_initialized)
{
return;
}
_initialized = true;
foreach (ILoggerRepository repository in LogManager.GetAllRepositories())
{
InitializeRepository(repository, logFile);
}
}
/// <summary>
/// Initializes a hierarchy.
/// </summary>
/// <param name="repository">The repository.</param>
/// <param name="logFile">The log file.</param>
private static void InitializeRepository(ILoggerRepository repository, string logFile)
{
#region Trace
// Create layout
PatternLayout simplePatternLayout = new PatternLayout();
simplePatternLayout.ConversionPattern = "%logger";
simplePatternLayout.ActivateOptions();
// Write everything to the trace
TraceAppenderEx traceAppenderEx = new TraceAppenderEx();
traceAppenderEx.Layout = simplePatternLayout;
traceAppenderEx.ActivateOptions();
#endregion
#region Rolling file
// Create layout
PatternLayout extendedPatternLayout = new PatternLayout();
extendedPatternLayout.Header = "[Application start]\r\n";
extendedPatternLayout.Footer = "[Application end]\r\n\r\n\r\n";
extendedPatternLayout.ConversionPattern = "%date - %-5level - %logger - %message%newline";
extendedPatternLayout.ActivateOptions();
RollingFileAppender fileAppender = new RollingFileAppender();
fileAppender.File = logFile;
fileAppender.StaticLogFileName = true;
fileAppender.Layout = extendedPatternLayout;
fileAppender.ImmediateFlush = true;
fileAppender.RollingStyle = RollingFileAppender.RollingMode.Size;
fileAppender.MaximumFileSize = "10MB";
fileAppender.AppendToFile = true;
fileAppender.MaxSizeRollBackups = 10;
fileAppender.Threshold = Level.All;
fileAppender.ActivateOptions();
#endregion
foreach (Logger log in repository.GetCurrentLoggers())
{
log.Additivity = true;
log.AddAppender(traceAppenderEx);
log.AddAppender(fileAppender);
}
repository.Configured = true;
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.