Има ли начин да създадете наименуван регистратор с NLog и да филтрирате регистрирането по това име(на)?

Понякога не искам да регистрирам всичко, особено в прозореца за изход на Visual Studio (target --> debugger) по време на разработката. Мислех, че може би има начин да наименувам конкретен регистратор (един клас) или няколко регистратори (от множество класове), така че в конфигурационния файл да мога да активирам регистриране само за класовете в разработка, които ме интересуват в момента.

В момента имам този най-често срещан NLog ред във всичките си класове:

private static readonly NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();

и много стандартна конфигурация, която просто изобразява регистрационни файлове в изходния прозорец.

За съжаление нямах късмет да намеря как да активирам/деактивирам регистратори по клас(ове).


person t3chb0t    schedule 24.10.2014    source източник
comment
Видяхте ли опцията условия? github.com/NLog/NLog/wiki/Conditions   -  person elvin    schedule 24.10.2014
comment
Сега имам и мисля, че това е точно това, което търсих. Ако съм търсил условия на NLog...   -  person t3chb0t    schedule 24.10.2014


Отговори (1)


Както споменах в коментарите, можете да използвате Условията на NLog, за да оцените и определите какво искате да направите с резултатите. Както се казва в документацията:

Условията са филтърни изрази, използвани с филтъра when. Те се състоят от един или повече тестове. Те се използват във филтъра "кога", за да се определи дали ще бъде предприето действие.

Има и много полезен пример:

<rules>
    <logger name="*" writeTo="file">
        <filters>
            <when condition="length('${message}') > 100" action="Ignore" />
            <when condition="equals('${logger}','MyApps.SomeClass')" action="Ignore" />
            <when condition="(level >= LogLevel.Debug and contains('${message}','PleaseDontLogThis')) or level==LogLevel.Warn" action="Ignore" />
            <when condition="not starts-with('${message}','PleaseLogThis')" action="Ignore" />
        </filters>
    </logger>
</rules>
person elvin    schedule 24.10.2014
comment
Ако той иска да филтрира конкретен наименуван регистратор, използвайте <logger name="My.Application.ClassName"> или name="*.ClassName". Ако искате изрично име logger, използвайте logger = LogManager.GetLogger("ExplicitName"). - person Nigel Touch; 13.10.2015