Я не уверен - ли это правильный форум для регистрации этого вопроса. Но я просто надеюсь, что кто-то здесь, возможно, использовал log4net, в прошлом настолько надеющийся для получения некоторой справки.
Я использую log4net для входа моих исключений. Параметры конфигурации похожи на это:
Я начал путем добавления этой конфигурации к web.config, но я получил ошибку (студия VS не могла найти, что схема для log4net-"Не могла найти информацию о схеме для элемента log4net"). Таким образом, я перешел по этой ссылке (Log4Net "Не удалось найти сообщения" информации о схеме), и настроил мои настройки в отдельном XML-файле и включил следующую строку кода мой AssemblyInfo.cs
:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "xmlfile.xml", Watch = true)]
И в фактическом коде, я поместил эту строку:
public void CreateUser(String username, String password)
{
try
{
log.Info("Inside createuser");
//code for creating user
}
catch(exception e)
{
log.Info("something happened in create user", e);
}
}
Проблема состоит в том, что файл журнала не создается. Я ничего не вижу внутри C:\Logs. Кто-либо может сказать мне, что я делаю неправильно здесь?
Любые предложения/исходные данные будут очень полезны.
Спасибо всем заранее.
Мне не удалось заставить работать настройку в Asembly.cs, не добавив это в Application_Start в моем Global.asax:
log4net.Config.XmlConfigurator.Configure();
Ваш файл журнала не создается, вероятно, из-за того, что у пользователя ASPNET нет разрешения на запись в каталог C: \ Logs \
. Убедитесь, что вы предоставили ASPNET полные права везде, где ваше приложение хочет создать файл журнала.
Итак, вы загружаете файл конфигурации, но затем устанавливаете переменную log следующим образом
private static readonly ILog log = LogManager.GetLogger(typeof(Program));
Если вы не укажете полный путь для отдельного файла конфигурации, log4net ожидает, что файл будет находиться в пути, возвращаемом:
System.AppDomain.CurrentDomain.BaseDirectory
Если у вас простое консольное приложение, это обычно означает каталог, содержащий сборку, но это не обязательно верно в других случаях. Есть много способов решить эту проблему (например, мой ответ здесь, а также).
Для начала может быть проще вернуть конфигурацию log4net обратно в app/web.config и игнорировать схему warning. Если логирование работает, то вы можете быть уверены, что у вас нет проблем с разрешениями, и можете переходить к следующему шагу, чтобы иметь конфигурацию во внешнем файле.
Что за приложение вы пишете? Возможно, я мог бы быть немного более конкретным в своем ответе...