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 <[email protected]> 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>
>
>
>