Как настроить log4net для службы Windows c#
У меня есть служба Windows, где приложение.конфигурационный файл и log4net.файлы конфигурации разделены. Ведение журнала не работает.
в моем приложении.файл конфигурации, у меня есть следующее В разделе:
<add key="log4net.Config" value="log4net.config"/>
это работает, если в значении я указываю абсолютный путь к log4net.конфигурационный файл.
Мне нужно указать абсолютный путь к log4net.Цун? Как такой как log4net.config и App.конфигурационный файл в той же папке, что выполнимый.
какие идеи?
Параг
2 ответов
может быть, это полезно (перемещение конфигурации Log4Net из интернета.config с ASP.NET 2.0 веб-сайты.).
Вот части, которые могут вас заинтересовать:
приложения Настройки log4net с помощью этого файла конфигурации. Там действительно два места для этого. Первый, глобальный.asax и второй файле AssemblyInfo.cs файл. Обратите внимание, что большинство времени вы начнете с глобальный.файл asax со всем кодом линейный. По какой-то причине, только чтобы это сработало, я должен был ... сломать Глобал.эйсакс использование код-за, а затем задницу файле AssemblyInfo.cs файл. Так это заканчивается в таком виде.
глобальные.эйсакс: глобальный.асакс.cs (в папке App_Code):
using System;
using System.Web;
public class GlobalAsax : HttpApplication
{
// you may have lots of other code here
void Application_Start(object sender, EventArgs e)
{
log4net.Config.XmlConfigurator.Configure();
}
}
теперь, когда у вас есть ваше приложение настройки вызова, такой как log4net, вы можно установить атрибут в собрание информация, чтобы log4net знал, где найдите файл конфигурации.
AssemblyInfo.cs
(вApp_Code
папка):
[assembly:log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
флаг вахты говорит log4net держать глаз на файле конфигурации для потенциальное изменение. Это полезно, если вы хотите изменить конфигурацию из журнала все ошибки только в середине тестирования.
чтобы убедиться, что log4net.config
всегда там, добавьте такой как log4net.сконфигурируйте csproject и установите его в CopyAlways
. Он должен быть представлен в папке debug.
вы можете использовать скрипт для копирования всего в папку выпуска, или если вы используете MS setup project, вручную добавьте этот файл в проект. Затем будет добавлена ссылка.
для службы Windows текущий каталог-Windows\system32 -- и XmlConfigurator.Configure () использует FileInfo, который обрабатывает относительные пути относительно текущего каталога. Поэтому log4net ищет свой конфигурационный файл в Windows\system32.
XmlConfiguratorAttribute с другой стороны использует BaseDirectory приложения, поэтому он всегда работает.
кроме того, вы можете сделать следующее перед вызовом XmlConfigurator.Configure ():
System.IO.Directory.SetCurrentDirectory (AppDomain.CurrentDomain.BaseDirectory);