You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4net-user@logging.apache.org by Damian Zembalski <da...@wp.pl> on 2010/08/20 16:23:35 UTC

Set log name in appender of log4net

I have class MyLogger, where I use log4net. How can I modify my appender 
to save log in specific logname (I want to set it by parameter logName).


 

    public void AddEntry(string source, string logName, string contextInfo, 
string message, EventLogEntryType eventType)
            {
               
                 log4net.ILog Log = log4net.LogManager.GetLogger(source);
    
                 Log.Error(String.Format("Context Info: {0}{1}{2}{3}", contextInfo, 
Environment.NewLine, Environment.NewLine, message));
                
            }

    <log4net>
      <root>
        <priority value="ALL" />
         <appender-ref ref="EventLogAppender" />
      </root>
    
     
This is myAppender. Now it writes in common logtype Application.

      <appender name="EventLogAppender" 
type="log4net.Appender.EventLogAppender" >
       
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%logger (%property{myContext}) [%level]- 
%message%newline" />
        </layout>
      </appender>
    </log4net>



Re: Set log name in appender of log4net

Posted by Matt Emory <re...@gmail.com>.
You can set the filename in the appender to take a property

<appender>
  ...
  <file type="log4net.Util.PatternString value="property{FileName}" />
</appender>

and set it in code via:
log4net.GlobalContext.Properties["FileName"] = logName;

or you can set it in code with something like this if you're dynamically
creating appenders:

 log4net.Appender.RollingFileAppender appender=
LogManager.GetRepository().GetAppenders()
                    .Where(appender=>appender.Name ==
source).FirstOrDefault() as log4net.Appender.RollingFileAppender;

if(appender != null)
{
   appender.File = logName;
   appender.ActivateOptions();
}


On 8/20/10, Damian Zembalski <da...@wp.pl> wrote:
>
> I have class MyLogger, where I use log4net. How can I modify my appender
> to save log in specific logname (I want to set it by parameter logName).
>
>
>
>
>    public void AddEntry(string source, string logName, string contextInfo,
> string message, EventLogEntryType eventType)
>            {
>
>                 log4net.ILog Log = log4net.LogManager.GetLogger(source);
>
>                 Log.Error(String.Format("Context Info: {0}{1}{2}{3}",
> contextInfo,
> Environment.NewLine, Environment.NewLine, message));
>
>            }
>
>    <log4net>
>      <root>
>        <priority value="ALL" />
>         <appender-ref ref="EventLogAppender" />
>      </root>
>
>
> This is myAppender. Now it writes in common logtype Application.
>
>      <appender name="EventLogAppender"
> type="log4net.Appender.EventLogAppender" >
>
>        <layout type="log4net.Layout.PatternLayout">
>          <conversionPattern value="%logger (%property{myContext}) [%level]-
> %message%newline" />
>        </layout>
>      </appender>
>    </log4net>
>
>
>