Изменение пути для регистратора с помощью приложения Form и его реализация в Service с помощью C# - PullRequest
0 голосов
/ 07 августа 2020

Я работаю над службой File Watcher, в которой тоже есть приложение-форма (2 разных проекта в одном решении). Итак, я получаю путь, где сохранить журнал с помощью приложения Forms. Затем я помещаю это в свой app.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>
        <add key="location" value="C:\Users\user\Documents" />
        <add key="logLocation" value="C:\Users\user\Documents" /> <!-- this is where it changes save it-->
    </appSettings>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
    </startup>
</configuration>

И у меня есть класс Variables, в котором я определяю свою переменную.

using System.Configuration;

namespace FileWatchingService
{
    public static class Variables
    {
        public static string FilePath { get; set; } = ConfigurationManager.AppSettings.Get("location");
        public static string LogPath { get; set; } = ConfigurationManager.AppSettings.Get("logLocation");
    }
}

Затем я пытаюсь поместить свой LogPath в вот:

using System;
using System.IO;

namespace FileWatchingService
{
    public static class Logger
    {
        public static void Log(string message)
        {
            try
            {
                string _message = String.Format("{0} {1}", message, Environment.NewLine);
                //File.AppendAllText(AppDomain.CurrentDomain.BaseDirectory + "logFile.log", _message);
                File.AppendAllText(Variables.LogPath + "logFile.log", _message);
            }
            catch (Exception ex)
            {
                //Implement logging on next version
            }
        }
    }
}

Проблема в том, что мой способ не работает. Что я могу сделать, чтобы изменить путь к моим файлам журналов?

1 Ответ

1 голос
/ 07 августа 2020

Глядя исключительно на код, кажется, что вам не хватает \ в конце значения LogPath . Вы также можете сделать File.AppendAllText(Variables.LogPath + "\logFile.log", _message); или просто определить сам LogPath, например:

 <appSettings>
    <add key="location" value="C:\Users\user\Documents" />
    <add key="logLocation" value="C:\Users\user\Documents\log.txt" /> <!-- the file itself -->
  </appSettings>

Тем не менее, я бы посоветовал просто использовать библиотеку для ведения журнала, а не разрабатывать свою собственную. Go с NLog или Serilog

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...