Geeks With Blogs
Wil Peck Experience is something you don't get until just after you need it.

I recently had the need to set the output path of the log files at runtime in log4net.  For some reason up until now I had never attempted to accomplish this.  As corporate permissions are more and more restrictive I found the need to set the FileAppender.File path at runtime to a location within the users profile. It turns out accomplishing this task is quite simple. 

public static void Initialize(string logDirectory)
{
    //get the current logging repository for this application
    ILoggerRepository repository = LogManager.GetRepository();
    //get all of the appenders for the repository
    IAppender[] appenders = repository.GetAppenders();
    //only change the file path on the 'FileAppenders'
    foreach (IAppender appender in (from iAppender in appenders
                                    where iAppender is FileAppender
                                    select iAppender))
    {
        FileAppender fileAppender = appender as FileAppender;
        //set the path to your logDirectory using the original file name defined
        //in configuration
        fileAppender.File = Path.Combine(logDirectory, Path.GetFileName(fileAppender.File));
        //make sure to call fileAppender.ActivateOptions() to notify the logging
        //sub system that the configuration for this appender has changed.
        fileAppender.ActivateOptions();
    }
}

HTH - Wil

 

Technorati Tags: ,,,
Posted on Thursday, October 8, 2009 10:58 AM | Back to top


Comments on this post: Setting log4net FileAppender.File at runtime

Comments are closed.
Comments have been closed on this topic.
Copyright © Wil Peck | Powered by: GeeksWithBlogs.net | Join free