C# 将文件嵌入DLL 。Log4net 配置
最近在弄使用Log4net记录日志。
将配置文件封装到的DLL中。
封装步骤:
1.将配置文件添加到类库中。
2.在配置文件上右键,选择属性。
3.
此时生成类库。DLL中就存在该配置文件啦。如图:

在类库中使用该配置文件:
//获取配置文件全称
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 =
}
C# 将文件嵌入DLL 。Log4net 配置的更多相关文章
- Winform Log4net 配置写不同文件
以下配置了二种写文件,第一种根据日期写文件yyyyMMdd.txt,第二种是写固定文件login.txt. 1, 下载Log4net组件: http://logging.apache.org/log4 ...
- c# 文件日志处理 需要log4net配置
using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using S ...
- C# 嵌入dll 动软代码生成器基础使用 系统缓存全解析 .NET开发中的事务处理大比拼 C#之数据类型学习 【基于EF Core的Code First模式的DotNetCore快速开发框架】完成对DB First代码生成的支持 基于EF Core的Code First模式的DotNetCore快速开发框架 【懒人有道】在asp.net core中实现程序集注入
C# 嵌入dll 在很多时候我们在生成C#exe文件时,如果在工程里调用了dll文件时,那么如果不加以处理的话在生成的exe文件运行时需要连同这个dll一起转移,相比于一个单独干净的exe,这种形 ...
- .NET 将 .config 文件嵌入到程序集
原文:.NET 将 .config 文件嵌入到程序集 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/Iron_Ye/article/details/ ...
- C# Log4Net配置
Log4Net是用来记录日志的,可以将程序运行过程中的信息输出到一些地方(文件.数据库.EventLog等),日志就是程序的黑匣子,可以通过日志查看系统的运行过程,从而发现系统的问题.日志的作用:将运 ...
- Log4Net 配置和使用
转:http://www.cnblogs.com/chencidi/archive/2010/01/12/1645291.html web.config配置如下: <?xml version=& ...
- Log4Net配置 转
http://www.cnblogs.com/qingyi/archive/2010/01/14/1647915.html 用一些东西老是忘记,先记在这啦.. <!--log4net相关说明一. ...
- MVC Log4Net 配置
1.引用log4net.dll 2.在项目根目录下增加log4.config文件 <?xml version="1.0"?> <configuration> ...
- ASP.NET MVC学习之Log4Net配置(日志记录)
Log4Net配置笔记---- 首先,添加对log4net.dll的引用. 在Web.config文件下的Configuration节点下添加Log4Net的配置信息: <!--Log4Net配 ...
随机推荐
- 虚拟机下linux安装mysql,apache和php
由于腿伤了,卧床在家折腾下linux,尝试用虚拟机装mysql,apche和php.中间各种波折,装了好几天,觉得有些经验还是要记录下来,让自己别忘了:) 按照下面这篇文章的方法,基本可以顺利安装成功 ...
- PSP个人(观众界面)
需求:作为一个观众,我希望了解某一场比赛的比分,以便了解赛况.(满意条件:精确到每一局的结果比分) 需求分析:实现查询数据库中每一局的分数并用界面显示. 生成设计文档: 运用三层架构,实现软件的基本功 ...
- 分拆素数和 HDU - 2098
把一个偶数拆成两个不同素数的和,有几种拆法呢? Input输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束.Output对应每个偶数,输出其拆成不同素数的个数,每个结果 ...
- An exception occurred while acquiring a poolable resource. Will retry.
我的是mysql-connector-java-5.1.20.jar加到lib下面就行了.或者在pom中加入配置也行.
- python基础知识---迭代器、生成器、装饰器
一.迭代器 二.生成器 http://www.cnblogs.com/huxi/archive/2011/07/14/2106863.html def func(): #定义生成器,和普通函数的区别是 ...
- Web API的Log问题
建立了一个Web API项目,在WebApiConfig.cs中已经启用了Tracing. config.EnableSystemDiagnosticsTracing(); 同时web.config中 ...
- 写了cookie阻止通过输入地址直接访问下一个html,但是直接输入地址访问时,会闪一下下一个页面,怎么回事啊????、
描述:做了两个页面login.html index.html 在index的body加了onload事件,调用一个js,js中有cookie的判断,防止没有登录就打开index.html,如果没 ...
- Ternary Search Trees 三分搜索树
经常碰到要存一堆的string, 这个时候可以用hash tables, 虽然hash tables 查找很快,但是hash tables不能表现出字符串之间的联系.可以用binary search ...
- js获取IP和MAC地址
1.IP 百度一下有很多 可以用这个 <script src="http://pv.sohu.com/cityjson?ie=utf-8"></script> ...
- 在Action 中访问web资源
1.什么是web资源: HttpServletRequest,HttpSession,ServletContext等原生的Servlet API. 2.为什么要访问web资源? B/S应用的Contr ...