Пользовательское имя файла в текущем файле журнала Log4Net?

StackOverflow https://stackoverflow.com/questions/1031096

  •  06-07-2019
  •  | 
  •  

Вопрос

У нас есть 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top