C# 将文件嵌入DLL 。Log4net 配置

时间:2023-03-09 19:11:12
C# 将文件嵌入DLL 。Log4net 配置

最近在弄使用Log4net记录日志。

将配置文件封装到的DLL中。

封装步骤:

1.将配置文件添加到类库中。

2.在配置文件上右键,选择属性。

3.C# 将文件嵌入DLL 。Log4net 配置

此时生成类库。DLL中就存在该配置文件啦。如图:

C# 将文件嵌入DLL 。Log4net 配置

在类库中使用该配置文件:

      //获取配置文件全称
string str = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name + ".Log4Net.config";
//读取配置文件
System.IO.Stream stream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(str);
log4net.Config.XmlConfigurator.Configure(stream);

附上使用Log4net全部代码

1.配置文件:Log4net.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<log4net>
<logger name="ErrorLog">
<level value="ERROR"></level>
<appender-ref ref="ErrorLog"></appender-ref>
</logger> <appender name="ErrorLog" type="log4net.Appender.RollingFileAppender">
<param name="File" value="ErrorLog/" />
<param name="AppendToFile" value="true" />
<!--是否默认文件名-->
<param name="StaticLogFileName" value="false" />
<!--变换的形式为日期--> <rollingStyle value="Date" /> <!--日期的格式,每天换一个文件记录--> <datePattern value="yyyyMMdd.TXT" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="[Log]%n记录时间:%d %n异常信息:%m%n[EndLog]%n%n" />
</layout>
</appender> <logger name="InfoLog">
<level value="INFO"></level>
<appender-ref ref="InfoLog"></appender-ref>
</logger>
<appender name="InfoLog" type="log4net.Appender.RollingFileAppender">
<param name="File" value="InfoLog\\" />
<param name="AppendToFile" value="true" />
<!--是否默认文件名-->
<param name="StaticLogFileName" value="false" />
<!--变换的形式为日期--> <rollingStyle value="Date" /> <!--日期的格式,每天换一个文件记录--> <datePattern value="yyyyMMdd.TXT" /> <layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="[Log]%n记录时间:%d %n异常信息:%m%n[EndLog]%n%n" />
</layout>
</appender> <logger name="WarnLog">
<level value="INFO"></level>
<appender-ref ref="WarnLog"></appender-ref>
</logger>
<appender name="WarnLog" type="log4net.Appender.RollingFileAppender">
<param name="File" value="WarnLog\\" />
<param name="AppendToFile" value="true" />
<!--是否默认文件名-->
<param name="StaticLogFileName" value="false" />
<!--变换的形式为日期--> <rollingStyle value="Date" /> <!--日期的格式,每天换一个文件记录--> <datePattern value="yyyyMMdd.TXT" /> <layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="[Log]%n记录时间:%d %n异常信息:%m%n[EndLog]%n%n" />
</layout>
</appender> <logger name="FatalLog">
<level value="Fatal"></level>
<appender-ref ref="FatalLog"></appender-ref>
</logger>
<appender name="FatalLog" type="log4net.Appender.RollingFileAppender">
<param name="File" value="FatalLog\\" />
<param name="AppendToFile" value="true" />
<!--是否默认文件名-->
<param name="StaticLogFileName" value="false" />
<!--变换的形式为日期--> <rollingStyle value="Date" /> <!--日期的格式,每天换一个文件记录--> <datePattern value="yyyyMMdd.TXT" /> <layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="[Log]%n记录时间:%d %n异常信息:%m%n[EndLog]%n%n" />
</layout>
</appender> </log4net> </configuration>

2.日志帮助类:LogHelper

   public class LogHelper
{
public static LogHelper logHelper=new LogHelper();
private readonly static ILog _errorLog = LogManager.GetLogger("ErrorLog");
private readonly static ILog _infoLog = LogManager.GetLogger("InfoLog");
private readonly static ILog _warnLog = LogManager.GetLogger("WarnLog");
private readonly static ILog _fatalLog = LogManager.GetLogger("FatalLog");
private LogHelper()
{
//获取配置文件全称
string str = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name + ".Log4Net.config";
//读取配置文件
System.IO.Stream stream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(str);
log4net.Config.XmlConfigurator.Configure(stream);
} /// <summary>
/// 普通日志信息
/// </summary>
/// <param name="msg">日志内容</param>
/// <param name="stackTrace">位置跟踪</param>
public void InfoLog(string msg, string stackTrace)
{
Log(LogType.InfoLog, msg, stackTrace);
} /// <summary>
/// 警告级日志信息
/// </summary>
/// <param name="msg">日志内容</param>
/// <param name="stackTrace">位置跟踪</param>
public void WarnLog(string msg, string stackTrace)
{
Log(LogType.WarnLog, msg, stackTrace);
} /// <summary>
/// Error级日志信息
/// </summary>
/// <param name="msg">日志内容</param>
/// <param name="stackTrace">位置跟踪</param>
public void ErrorLog(string msg, string stackTrace)
{
Log(LogType.ErrorLog, msg, stackTrace);
}
/// <summary>
/// 致命级日志信息
/// </summary>
/// <param name="msg">日志内容</param>
/// <param name="stackTrace">位置跟踪</param>
public void FatalLog(string msg, string stackTrace)
{ Log(LogType.FatalLog, msg, stackTrace);
} /// <summary>
/// 记录日志通用方法
/// </summary>
/// <param name="ltype">所添加日志类型,LogType枚举</param>
/// <param name="logs">所添加的日志信息</param>
public void Log(LogType ltype, params string[] logs)
{
string msg = string.Join("\n", logs);
switch (ltype)
{
case LogType.InfoLog: if (_infoLog.IsInfoEnabled) _infoLog.Fatal(msg);
break;
case LogType.WarnLog: if (_warnLog.IsWarnEnabled) _warnLog.Fatal(msg);
break;
case LogType.ErrorLog: if (_errorLog.IsErrorEnabled) _errorLog.Fatal(msg);
break;
case LogType.FatalLog: if (_fatalLog.IsFatalEnabled) _fatalLog.Fatal(msg);
break;
}
}
} public enum LogType
{
/// <summary>
/// 普通日志
/// </summary>
InfoLog = ,
/// <summary>
/// 警告级别日志
/// </summary>
WarnLog = ,
/// <summary>
/// 错误级别日志
/// </summary>
ErrorLog = ,
/// <summary>
/// 致命级别日志
/// </summary>
FatalLog =
}