Пользовательское имя файла в текущем файле журнала Log4Net?
Вопрос
У нас есть ASP.Сетевое приложение, в котором мы используем Log4Net для регистрации сведений в приложении - ничего нового там нет - и имена файлов текущего журнала представлены в обычном формате:
rolling-log.txt
rolling-log.txt.1
rolling-log.txt.2 etc.
A каждый пользователь приложения вносит изменения в файл журнала, файл журнала может быть трудночитаемым для конкретного пользователя, и поэтому мы хотели бы каким-то образом изменить конфигурационный файл, чтобы записывать данные журнала пользователя по отдельности, каждая запись в определенный файл, например
<applicationId>rolling-log.txt
<applicationId>rolling-log.txt.1
<applicationId>rolling-log.txt.2
etc.
где - уникальный идентификатор приложения каждого пользователя, состоящий из пятизначного числа, например
12345rolling-log.txt
Есть какие-нибудь идеи о наилучшем способе реализации этого, предполагая, что это возможно?
Ваше здоровье
Бретт
Решение
найдите свойства контекста log4net...
в вашем коде :
log4net.GlobalContext.Properties["id"] = "12345";
тогда
log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo("configPath"));
в конфигурационном файле log4net:
<file type="log4net.Util.PatternString"
value="%property{id}rolling-log.txt" />
Другие советы
<file type="log4net.Util.PatternString">
<conversionPattern value="C:\Logs\log-%date{ yyyy.MM.dd.HH.mm.ss}-[%processid].log" />
</file>
Я полагаю, что конфигурационный файл Log4Net поддерживает переменные среды (напримерИМЯ ПОЛЬЗОВАТЕЛЯ), а также настраиваемые шаблоны, которые должны дать вам то, что вы хотите.
Посмотрите на "PatternString для конфигурации на основе шаблона" в примечания к выпуску Log4Net версии V1.2.10.
Я не думаю, что файл журнала для каждого пользователя возможен, но вы можете написать пользовательский слой между log4net и вашим приложением, который добавляет идентификатор пользователя перед записью в журнал.
Вы можете написать пользовательский макет, наследовав его от XmlLayoutBase.
Извлеките RollingPatternFileAppender, точно так же, как rollingfileappender плюс динамическое имя файла http://mysite.verizon.net/vze14bhji