2015-05-28 4 views
0

Мне нужно создать журнал для каждого пользователя - количество зарегистрированных данных будет значительным, и я не хочу хранить его в одном файле.Log4net для переменных файлов

Есть ли способ настроить log4net таким образом, что я могу указать, к какому файловому журналу нужно писать?

Несомненно, я могу написать свой собственный appender. Но как передать ему (красиво) информацию о целевом файле?

+0

Почему бы не войти в базу данных и хранить имя пользователя как часть записи? –

ответ

1

Если имя файла не изменяется во время выполнения программы, то вы можете инициализировать его

string logfileName = ... 

log4net.GlobalContext.Properties["LogName"] = logfileName; 

Примечание, это должно быть сделано до того регистрируется первое сообщение.

Затем измените конфигурационный файл, чтобы использовать это свойство, например

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <file type="log4net.Util.PatternString" value="%property{LogName}" /> 
    ... 

Вы можете использовать встроенные переменные, как $ {USERNAME} и {или $ COMPUTERNAME} в строке шаблона.

например

<file type="log4net.Util.PatternString" value="LogFileFor_${USERNAME}_On_${COMPUTERNAME}.log" /> 
+0

К сожалению, он * будет * изменяться во время выполнения программы, ведение журнала выполняется в службе, которая работает для разных пользователей одновременно. – Spook

Смежные вопросы