#c# #nlog
#c# #nlog
Вопрос:
Я пытаюсь регистрировать исключения в консольном приложении. Я сделал все как всегда (и тогда это сработало для меня …):
NLog.config:
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
autoReload="true"
throwExceptions="false"
internalLogLevel="Off" internalLogFile="c:tempnlog-internal.log">
<targets>
<target name="LogFile" xsi:type="File"
fileName="${basedir}/Log/${date:format=yyyyMMdd} myLog.txt"
layout="${longdate}|${level:uppercase=true}|${message}|${exception}" />
</targets>
<rules>
<logger name="*" minlevel="Debug" writeTo="LogFile" />
</rules>
</nlog>
class Program
{
private static Logger _log = LogManager.GetCurrentClassLogger();
static void Main(string[] args)
{
_log.Error("test");
}
}
По какой-то загадочной причине файл нигде не создается на моем компьютере. Есть идеи, почему
Ответ №1:
Ваша конфигурация выглядит корректной, так что это не должно быть проблемой.
Некоторые вещи, которые нужно проверить:
-
Вы nlog.config в правильном каталоге? Лучший способ проверить — скопировать файл nlog.config в каталог с вашим .dll или .exe.
-
Включите исключения, чтобы убедиться, что ошибки не фиксируются Nlog:
throwExceptions="true"
-
Проверьте внутренний журнал, установив
internalLogLevel="Info"
и проверив «c:tempnlog-internal.log «
Полное руководство по устранению неполадок можно найти в документации NLog.
Ответ №2:
В Visual Studio проверьте, имеет ли ваш файл NLog.config следующие свойства: Действие сборки: Содержимое. Копировать в выходной каталог = Копировать, если новее
Я прилагаю снимок экрана, где вы можете увидеть, как он должен выглядеть. Извините, это на испанском языке.
Ответ №3:
Отредактируйте свою NLog
конфигурацию, измените путь к файлу журнала следующим образом, используйте ${shortdate}
вместо {date:format=yyyyMMdd}
этого . Задайте имя в правилах и вызовите его, как в этом примере.
<?xml version="1.0" encoding="utf-8"?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<targets async="true">
<targets>
<target name="LogFile" xsi:type="File"
fileName="${basedir}/Log/${shortdate}myLog.txt"
layout="${longdate}|${level:uppercase=true}|${message}|${exception}" />
</targets>
<rules>
<logger name="ErrorLog" minlevel="Trace" writeTo="LogFile" />
</rules>
</nlog>
И ваш .cs
class Program
{
private Logger ErrorLogger = NLog.LogManager.GetLogger("ErrorLog");
static void Main(string[] args)
{
ErrorLogger.Error("test");
}
}
Комментарии:
1. Итак, вы предлагаете перейти от ведения журнала на основе классов к ведению журнала с именем — это не должно быть проблемой здесь, имхо… Кроме того, в вашем именовании есть несоответствие:
ErrorFile
vsErrorLog
.2. Это только пример, который работает очень хорошо, я предлагаю изменить путь к имени файла, часть формата даты и изменить уровень трассировки для регистрации всего.