2013-11-26 1 views
0

У меня есть консольное приложение, работающее на сервере, который производит много протоколирования (для этого используется NLog). Я хочу, чтобы вы могли прослушивать удаленную запись. Я мог бы использовать тип ведения журнала сети, но я хочу уменьшить пропускную способность, поэтому я хочу применить фильтрацию на стороне сервера, чтобы клиент отправил только отфильтрованное ведение журнала.Лог удаленных клиентов с фильтрацией на стороне сервера с использованием NLog

Я мог бы создать предопределенные цели ведения журнала на сервере и слушать их, но это недостаточно. Клиент должен иметь возможность указать фильтр. Несколько клиентов должны иметь возможность прослушивать журнал.

Есть ли способ получить этот тип функциональности, работающий из коробки с помощью NLog? Или мне нужно создать собственный способ сделать это с помощью списка подписчиков?

ответ

0

В этом случае нет 'из коробки' решений, но вы можете написать пользовательские Target:

Например:

public class MySuperTarget : TargetWithLayout 
{ 
    public MySuperTarget() 
    { 
    } 

    protected override void Write(LogEventInfo logEvent) 
    { 
     // 1. Filter LogEventInfo 
     // 2. Send to clients 
    } 
} 

Больше информации здесь: https://github.com/nlog/NLog/wiki/How-to-write-a-Target