Я разрабатываю приложение на c #, которое создает 2 файла журнала (файлы .txt): один для ошибок, а другой для модификаций, сделанных пользователями. Эти два файла создаются с log4net . Я вижу проблему в том, что эти файлы могут быть отредактированы и изменены по ошибке.
Я хотел бы установить эти файлы только для чтения, и что log4net все еще может писать на них. Потому что, если я просто изменю свойство в файле, следующий журнал не будет записан.
Есть способ сделать это?
Кроме того, пользователь приложения может открыть этот файл журнала из приложения. Для этого я использую следующий код:
System.IO.FileInfo finfo = new System.IO.FileInfo("path");
if (finfo.Exists)
{
//finfo.Attributes = System.IO.FileAttributes.ReadOnly;
// I don't use the previous line at the moment, because it blocks the followings logs.
System.Diagnostics.Process.Start("path");
}
А вот код для создания и вызова регистратора:
public static class CLogger
{
private static readonly ILog logger = LogManager.GetLogger(typeof(CLogger));
static CLogger()
{
XmlConfigurator.Configure(new System.IO.FileInfo("path to .config file"));
}
public static void WriteLog(ELogLevel logLevel, String log)
{
if (logLevel.Equals(ELogLevel.DEBUG))
{
logger.Debug(log);
}
else if (logLevel.Equals(ELogLevel.ERROR))
.
.
.
else if (logLevel.Equals(ELogLevel.WARN))
{
logger.Warn(log);
}
}
}
Обращение к регистратору:
CLogger.WriteLog(ELogLevel.ERROR, ex.ToString());