Enterprise Library 5.0: работа со многими категориями в журналах - PullRequest
0 голосов
/ 26 октября 2011

Есть некоторый код:

private const string FORMAT_TEXT = 
   "{timestamp}: [{category} ({win32ThreadId}-{threadName}) {severity}] |{title}|: {message}";
string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "trace.log");
var builder = new ConfigurationSourceBuilder();


builder.ConfigureLogging()
         .WithOptions.DoNotRevertImpersonation()
         .LogToCategoryNamed("Category1")
         .SendTo.FlatFile("MyMessages1")
         .FormatWith(new FormatterBuilder()
            .TextFormatterNamed("Text Formatter 1").UsingTemplate(FORMAT_TEXT))
         .ToFile(path)
         .LogToCategoryNamed("Category2")
         .SendTo.FlatFile("MyMessages2")
         .FormatWith(new FormatterBuilder()
            .TextFormatterNamed("Text Formatter 2").UsingTemplate(FORMAT_TEXT))
         .ToFile(path);

var configSource = new DictionaryConfigurationSource();
builder.UpdateConfigurationWithReplace(configSource);
EnterpriseLibraryContainer.Current = EnterpriseLibraryContainer.CreateDefaultContainer(configSource);

for (int i = 0; i < 10; i++)
{
   Logger.Write("Error message: " + i.ToString(), "Category1");
   Logger.Write("Error message: " + i.ToString(), "Category2");
}

Console.ReadKey();

Он создает два файла журнала: trace.log для категории 1 и 65a25bb0-4c42-430d-b2b7-9bd2c8ea41e1trace.log для категории 2.Я хочу войти в один файл trace.log.Что не так?

1 Ответ

1 голос
/ 26 октября 2011

Вы хотите использовать SharedListener, чтобы обе категории регистрировали одного и того же слушателя.В вашем коде вы создаете два отдельных прослушивателя, которые оба регистрируют один и тот же файл (что вызывает проблемы с блокировкой файлов).

Попробуйте:

builder.ConfigureLogging()
         .WithOptions.DoNotRevertImpersonation()
         .LogToCategoryNamed("Category1")
             .SendTo.FlatFile("MyMessages1")
             .FormatWith(new FormatterBuilder()
                .TextFormatterNamed("Text Formatter 1").UsingTemplate(FORMAT_TEXT))
             .ToFile(path)
         .LogToCategoryNamed("Category2")
             .SendTo.SharedListenerNamed("MyMessages1");
...