Пользовательские уровни журнала NLog или несколько средств ведения журнала для каждого класса?

Как я могу отделить мои обычные ведение журнала / аудит от ведения журнала / аудита безопасности? Журнал событий Windows делает это различие с событиями приложений и событиями безопасности.

Если бы я мог создать настраиваемый LogLevel, например LogLevel.AuditSuccess или LogLevel.AuditFailure, то я мог бы установить правила моего файла конфигурации, чтобы они соответствовали этим и выводить эти события. Например,

<logger name="*" levels="AuditSuccess,AuditFailure" writeTo="target1"/>
<logger name="*" levels="DEBUG,INFO" writeTo="target1"/>

Тогда я мог бы просто использовать 1 таблицу, записать «Уровень» в столбец и иметь возможность искать и сортировать свои данные, используя эту информацию столбца. (Я не думаю, что мы можем создать собственный LogLevel.)

Я придумал один обходной путь - использовать по 2 регистратора на класс, при этом каждый регистратор сохраняется для разных целей. Однако это кажется излишним, особенно если мне нужно добавить дополнительные похожие типы целей.

<logger name="myNamespace.*" levels="INFO,ERROR" writeTo="target1"/>
<logger name="mySecurityLogger" levels="INFO,ERROR" writeTo="target2"/>

public class MyClass {
    private static Logger _logger = LogManager.GetCurrentClassLogger();
    private statac Logger _loggerSecurity = LogManager.GetLogger("mySecurityLogger");
    ...
}

С этим, Я мог бы создать две цели базы данных - каждая с другой таблицей - а затем создать по одному правилу для каждой целевой цели.

Есть предложения?

5
задан Ryan Gates 28 July 2014 в 00:30
поделиться