Блокировка приложения, не входящего в файл
У меня есть следующая конфигурация и код, writer.logentry
не выдает исключение, но файл не создан.
Обновление 1: я изменил слушателя, я удалил журнал событий и добавил журнал плоских файлов. Я до сих пор не могу увидеть созданный файл.log
Я полагаю, что я что-то упустил в конфигурации?
<loggingConfiguration name="" tracingEnabled="true" defaultCategory="General">
<listeners>
<add name="Flat File Trace Listener" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.FlatFileTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.FlatFileTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
fileName="AskAndTrack.log" traceOutputOptions="LogicalOperationStack, DateTime, Timestamp, Callstack" />
</listeners>
<formatters>
<add type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
template="Timestamp: {timestamp}{newline}
Message: {message}{newline}
Category: {category}{newline}
Priority: {priority}{newline}
EventId: {eventid}{newline}
Severity: {severity}{newline}
Title:{title}{newline}
Machine: {localMachine}{newline}
App Domain: {localAppDomain}{newline}
ProcessId: {localProcessId}{newline}
Process Name: {localProcessName}{newline}
Thread Name: {threadName}{newline}
Win32 ThreadId:{win32ThreadId}{newline}
Extended Properties: {dictionary({key} - {value}{newline})}"
name="Text Formatter" />
</formatters>
<categorySources>
<add switchValue="All" name="General">
<listeners>
<add name="Flat File Trace Listener" />
</listeners>
</add>
</categorySources>
<specialSources>
<allEvents switchValue="All" name="All Events" />
<notProcessed switchValue="All" name="Unprocessed Category" />
<errors switchValue="All" name="Logging Errors & Warnings">
<listeners>
<add name="Flat File Trace Listener" />
</listeners>
</errors>
</specialSources>
</loggingConfiguration>
catch(Exception ex)
{
var logEntry = new LogEntry();
logEntry.Message = ex.Message;
Logger.Write(logEntry);
}
2 ответа
Посмотрите на меня, как будто вам не хватает категории и приоритета, вот мой фрагмент. Игнорируйте вспомогательные методы, они просто возвращают категорию, такую как "Общие", и приоритет, такой как "Ошибка".
if (!Logger.Writer.IsLoggingEnabled()) return;
var logEntry = new LogEntry { Severity = GetTraceEventTypeFromPriority(severity) };
logEntry.Categories.Add(GetLogCategory(app_name, severity)); // CHANGED TO NONE BECAUSE SITECORE SUCKS
logEntry.Priority = (int)severity;
if (!Logger.ShouldLog(logEntry)) return;
logEntry.Message = message;
logEntry.Title = GetLogTitle(RequestDataManager.RequestData.blah, message, severity);
lock (_locker)
{
Logger.Write(logEntry);
}
Размещенная конфигурация выглядит хорошо. Корпоративная библиотека не сгенерирует исключение, если при ведении журнала произошла ошибка - она попытается зарегистрировать сбой в специальном источнике ошибок (если он настроен). Вы не добавили Trace Listener для ошибок, но я рекомендую это сделать.
Ваша проблема выглядит так, как будто это разрешения. Можете ли вы убедиться, что у процесса есть разрешения на создание файла с именем AskAndTrack.log
? Или, возможно, создайте файл заранее или напишите в папку, в которой явно предоставлены разрешения (например, "Полный доступ для всех" (только для тестирования!)).