是否可以在日志文件中插入自定义行作为第一行?
Is it possible to insert a custom line as the first line in a log file?
我为 Web 服务应用程序创建了一个自定义日志文件,我们想在其中记录处理请求的时间。我们希望它采用 .csv 格式,因为这样更易于阅读。
我已经成功配置了一个附加程序,我在其中自定义了日志输出,所以它只输出以逗号分隔的日期和消息。
<log4net>
<appender name="TimingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value=".\App_Data\Logs\" />
<datePattern value="'GetInstallationsTiming.log_'yyyy-MM-dd'.txt'" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<appendToFile value="true" />
<staticLogFileName value="false" />
<layout type="log4net.Layout.PatternLayout, log4net">
<conversionPattern value="%date{yyyy-MM-dd HH:mm:ss},%message%newline" />
</layout>
</appender>
<logger name="GetInstallationsTimingLog" addivity="false">
<level value="All"></level>
<appender-ref ref="TimingLogFileAppender" />
</logger>
</log4net>
我想知道是否可以将自定义行作为第一行,这基本上是 header,比如日期、以毫秒为单位的时间、联系人电子邮件、[=18] 的数量=]?
如果你使用自定义的东西,你可以这样写:
public static void Logger(string lines)
{
string path = "C:/Log/";
VerifyYourPath(path);
string fileName = DateTime.Now.Day.ToString() + DateTime.Now.Month.ToString() +
DateTime.Now.Year.ToString() + "_Logs.txt";
if (Exist(fileName))// Check you already have this file or not
{
// add the new lines to exisiting file
}
else
{
try
{
System.IO.StreamWriter file = new System.IO.StreamWriter(path + fileName, true);
var title = DateTime.Now.ToString()/*What you want*/;
file.WriteLine(title + ": " + lines);
file.Close();
}
catch (Exception) { }
}
}
您可以添加您想要的而不是 DateTime.Now.toString()。如果你愿意,你也可以检查它是否是第一行。
您使用的是标准的 RollingFileAppender (log4net.Appender.RollingFileAppender)。你说 'custom appender',这可能意味着你编写了一种新型的 appender。
标准的 RollingFileAppender 可以像这样配置 header:
<layout type="log4net.Layout.PatternLayout">
<header type="log4net.Util.PatternString" value="%newlineLOG START- %env{COMPUTERNAME} - %appdomain - UTC Time: %utcdate Local time: %date %newlineNOTE: All events are logged using UTC time.%newline"/>
这将在每次应用程序启动时将以下行添加到日志中:
LOG START- MyComputer- MyApp.exe - UTC Time: 2019-08-05 12:07:26,641
Local time: 2019-08-05 14:07:26,643
NOTE: All events are logged using UTC time.
每次开始记录时都会添加 header 文本,而不是只在顶部添加一次,因此这可能不是您想要的。
我为 Web 服务应用程序创建了一个自定义日志文件,我们想在其中记录处理请求的时间。我们希望它采用 .csv 格式,因为这样更易于阅读。
我已经成功配置了一个附加程序,我在其中自定义了日志输出,所以它只输出以逗号分隔的日期和消息。
<log4net>
<appender name="TimingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value=".\App_Data\Logs\" />
<datePattern value="'GetInstallationsTiming.log_'yyyy-MM-dd'.txt'" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<appendToFile value="true" />
<staticLogFileName value="false" />
<layout type="log4net.Layout.PatternLayout, log4net">
<conversionPattern value="%date{yyyy-MM-dd HH:mm:ss},%message%newline" />
</layout>
</appender>
<logger name="GetInstallationsTimingLog" addivity="false">
<level value="All"></level>
<appender-ref ref="TimingLogFileAppender" />
</logger>
</log4net>
我想知道是否可以将自定义行作为第一行,这基本上是 header,比如日期、以毫秒为单位的时间、联系人电子邮件、[=18] 的数量=]?
如果你使用自定义的东西,你可以这样写:
public static void Logger(string lines)
{
string path = "C:/Log/";
VerifyYourPath(path);
string fileName = DateTime.Now.Day.ToString() + DateTime.Now.Month.ToString() +
DateTime.Now.Year.ToString() + "_Logs.txt";
if (Exist(fileName))// Check you already have this file or not
{
// add the new lines to exisiting file
}
else
{
try
{
System.IO.StreamWriter file = new System.IO.StreamWriter(path + fileName, true);
var title = DateTime.Now.ToString()/*What you want*/;
file.WriteLine(title + ": " + lines);
file.Close();
}
catch (Exception) { }
}
}
您可以添加您想要的而不是 DateTime.Now.toString()。如果你愿意,你也可以检查它是否是第一行。
您使用的是标准的 RollingFileAppender (log4net.Appender.RollingFileAppender)。你说 'custom appender',这可能意味着你编写了一种新型的 appender。
标准的 RollingFileAppender 可以像这样配置 header:
<layout type="log4net.Layout.PatternLayout">
<header type="log4net.Util.PatternString" value="%newlineLOG START- %env{COMPUTERNAME} - %appdomain - UTC Time: %utcdate Local time: %date %newlineNOTE: All events are logged using UTC time.%newline"/>
这将在每次应用程序启动时将以下行添加到日志中:
LOG START- MyComputer- MyApp.exe - UTC Time: 2019-08-05 12:07:26,641 Local time: 2019-08-05 14:07:26,643
NOTE: All events are logged using UTC time.
每次开始记录时都会添加 header 文本,而不是只在顶部添加一次,因此这可能不是您想要的。