Предположим что мы используем несколько логеров для разных нужд:
var log1 = log4net.LogManager.GetLogger("Manage"); var log2 = log4net.LogManager.GetLogger("Requests"); var log3 = log4net.LogManager.GetLogger("Task"); var log4 = log4net.LogManager.GetLogger("Results");
Все логи кроме "Task" должны складываться в файл "all.log" ,а лог "Tasks" в файлы вида "task_
Для того чтобы это работало нам нужно разделить поток сообщении от всех логгеров на два appender'а. Сделать это можно с помощью стандартных фильтров:
... ...
Т.е. в appender "all" мы пишем все кроме того что отправлено через логгер "tasks" ,а в appender "tasks" только то что через "tasks" и больше ничего (DenyAllFilter).
Но нам то еще надо чтобы имя лога менялось!
Для этого сделаем вот такой код по переключению:
var hierarchy = (Hierarchy)log4net.LogManager.GetRepository(); var rol = (RollingFileAppender)hierarchy.Root.GetAppender("task"); rol.File = Path.GetDirectoryName(rol.File)+string.Format(@"\task_{0}.log",taskname); rol.ActivateOptions();
Комментариев нет:
Отправка комментария