Запись файлов журнала - PullRequest
       8

Запись файлов журнала

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

Я занимаюсь разработкой приложения на c #, которое работает как служба Windows.Какие бы транзакции мы ни делали в приложении, я записываю его в файл журнала.Каталог журнала добавляется в файл app.config, как показано ниже.

<add key ="LogDir" value="log" />
    <add key ="LogLevel" value="2" />

А в коде c # к указанному выше доступ осуществляется, как показано ниже.

int logLevel = Convert.ToInt32(ConfigurationManager.AppSettings["logLevel"]);
                if (logLevel > 0)
                {
                    logger = new Logger();
                    logger.TraceLevel = logLevel - 1;
                    logger.logDir = ConfigurationManager.AppSettings["logDir"];
                    logger.logFileBaseName = "touchserver";
                }

А затем, когда любой процесспроисходит, я записываю данные в журнал, как показано ниже.

TouchServer.Log(Logger.MessageType.Trace, 1, "Item successfully deleted");

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

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

Пожалуйста, помогите мне найти решение в этом.

И я устанавливаю службу с помощью команды Installutil.

Заранее спасибо sangita

Ответы [ 2 ]

3 голосов
/ 07 октября 2011

Хотя вы можете понять, почему это не работает, и исправить решение, в целом нет необходимости реализовывать компонент ведения журнала.

Есть отличные бесплатные библиотеки, которые делают это очень хорошо. log4net очень популярен.Это простой в использовании, многофункциональный и эффективный.Посмотрите на это.

2 голосов
/ 07 октября 2011

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

Проверьте, каковы результаты операций ввода-вывода, используя Process Monitor . Я подозреваю, что вы обнаружите, что учетная запись, используемая для запуска процесса службы, не имеет разрешений на запись, когда она пытается записать файл журнала.

Но лучший вариант - использовать существующую библиотеку журналов, как Хемал предлагает .

...