log4
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<!--日志记录组建配置-->
<log4net> <logger name="ExceptionLogger">
<level value="ERROR" />
<appender-ref ref="ExceptionFileAppender" />
<!--<appender-ref ref="ConsoleAppender" />-->
</logger> <logger name="InfoLogger">
<level value="INFO" />
<appender-ref ref="InfoFileAppender" />
<!--<appender-ref ref="ConsoleAppender" />-->
</logger> <logger name="DebugLogger">
<level value="All" />
<appender-ref ref="DebugFileAppender" />
<!--<appender-ref ref="ConsoleAppender" />-->
</logger> <!-- Exception -->
<appender name="ExceptionFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="Logs\Exception\" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyyMMdd'..log'" />
<staticLogFileName value="false" />
<layout type="log4net.Layout.PatternLayout">
<header value="------------------------------------------------------------ " />
<ConversionPattern value=" %date [%thread] - %message%newline%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="ERROR"/>
<param name="LevelMax" value="ERROR"/>
</filter>
</appender> <!-- Info -->
<appender name="InfoFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="Logs\Info\" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyyMMdd'..log'" />
<staticLogFileName value="false" />
<layout type="log4net.Layout.PatternLayout">
<header value="------------------------------------------------------------ " />
<ConversionPattern value="%date [%thread] - %message%newline%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="INFO"/>
<param name="LevelMax" value="INFO"/>
</filter>
</appender> <!-- Debug -->
<appender name="DebugFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="Logs\Debug\" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyyMMdd'..log'" />
<staticLogFileName value="false" />
<layout type="log4net.Layout.PatternLayout">
<header value="------------------------------------------------------------ " />
<ConversionPattern value="%date [%thread] - %message%newline%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="DEBUG"/>
<param name="LevelMax" value="DEBUG"/>
</filter>
</appender> <!-- Console部分log输出格式的设定 -->
<!--<appender name="ConsoleAppender" type="log4net.Appender.RollingFileAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] - %message%newline%newline" />
</layout>
</appender>--> <!-- Setup the root category, add the appenders and set the default level -->
<root>
<!--<level value="ALL" />-->
<appender-ref ref="ExceptionFileAppender" />
<appender-ref ref="InfoFileAppender" />
<appender-ref ref="DebugFileAppender" />
</root>
</log4net>
</configuration>
logger
public static class Logger
{
static ILog log; static Logger()
{
string strPath = System.AppDomain.CurrentDomain.BaseDirectory;
strPath = System.IO.Path.Combine(strPath, "log4net.config");
System.IO.FileInfo log4File = new System.IO.FileInfo(strPath);
log4net.Config.XmlConfigurator.Configure(log4File);
log = LogManager.GetLogger("AdoNet");
} /// <summary>
/// 记录信息
/// </summary>
/// <param name="argContent"></param>
public static void LogInfo(string argContent)
{
log.Info(argContent);
} /// <summary>
/// 记录信息
/// </summary>
/// <param name="argObj"></param>
public static void LogInfo(object argObj)
{
log.Info(new { argObj });
} /// <summary>
/// 记录错误
/// </summary>
/// <param name="message"></param>
/// <param name="exception"></param>
public static void LogError(string message,System.Exception exception)
{
log.Error(message, exception);
} /// <summary>
/// 记录错误
/// </summary>
/// <param name="message"></param>
/// <param name="exception"></param>
public static void LogError( object message,System.Exception exception)
{
log.Error(new {message = message, exception});
} /// <summary>
/// 记录错误
/// </summary>
/// <param name="error"></param>
public static void LogError(string error)
{
log.Error(new {error = error});
}
}
调用
Logger.LogError("Error?");
Logger.LogInfo("Info");
log4的更多相关文章
- .net错误日志记录(log4)
Log4 web.config <!--这段放前面--> <configSections> <section name="log4net" type= ...
- Log4j使用教程 log4:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader).
1.Logger类 通过Logger类的静态方法Logger.getRootLogger得到RootLogger.所有其他的loggers是通过静态方法Logger.getLogger来实例化并获取的 ...
- Log4.net使用配置
开发中经常使用到日志记录功能,Log4.net可以将日志记录到文件中,也可以记录到数据库中,使用非常方便,之前也一直在用,最近也参照了一下网上的资料,想简单总结一下 本文重在通过通用日志类来使用Log ...
- 关于log4.net 错误,求解
1.上结果 能生成文件 ,但是文件中无内容 2.配置文件 <configSections> <section name="log4net" type=" ...
- ELK系列~Nxlog日志收集加转发(解决log4日志换行导致json转换失败问题)
本文章将会继承上一篇文章,主要讲通过工具来进行日志的收集与发送,<ELK系列~NLog.Targets.Fluentd到达如何通过tcp发到fluentd> Nxlog是一个日志收集工具, ...
- Log4.Net 在Winfrom、MVC、ashx程序里的使用,ashx程序里使用异步
最近做一个双11活动的,是一套相关的H5页面.本来以为难度不大,但是做下来几天还是遇到些问题.就总结一下吧,还是有收获的. 1.在H5页面中,有一个遮罩层,还是挺有意思的.直接用div+css控制遮罩 ...
- netcore log4相关
配置: 1:NuGet程序包 - 搜索log4net - 安装 2:配置代码 Startup文件 #region log4 public static ILoggerRepository ...
- Log4.Net 在Winform、MVC、ashx程序里的使用,ashx程序里使用异步
最近做一个双11活动的,是一套相关的H5页面.本来以为难度不大,但是做下来几天还是遇到些问题.就总结一下吧,还是有收获的. 1.在H5页面中,有一个遮罩层,还是挺有意思的.直接用div+css控制遮罩 ...
- log4.net 配置 - StringMatchFilter过滤器的使用
当我们需要对log4输出的内容进行过滤时就需要使用到StringMatchFilter过滤器 它有两种工作模式: 1.字符串查找模式:只要消息内容包含指定字符串则符合过滤器规则. 2.正则表达式模式: ...
- log4写完日志不会自动释放
今天想做个日志记录功能.网上查了下.决定使用log4net 来做. 但是最发现在写日志的时候.会一直占用当前的日志文件.当你想查看的时候会提示另一个进程占用了该文件. 只有到他创建下一个日志文件.然后 ...
随机推荐
- JS URL 使用base64加密与解密
JS编码方式: <script type="text/javascript"> document.write(encodeURI("http://www.w3 ...
- Spring MVC 教程,快速入门,深入分析
http://elf8848.iteye.com/blog/875830/ Spring MVC 教程,快速入门,深入分析 博客分类: SPRING Spring MVC 教程快速入门 资源下载: ...
- [linux basic 基础]----同步互斥量
互斥量,运行程序元锁住某个对象,使得每次只能有一个线程访问它:为了控制对关键代码的访问,必须在进入这段代码之前锁住一个互斥量,然后在完成操作之后解锁它 :基本函数与用于信号量的函数非常相似#inclu ...
- C#应用程序单进程检测
以下程序经过VS2010测试通过: /// <summary> /// 应用程序的主入口点. /// </summary> [STAThread] static void Ma ...
- JQuery 常用方法基础教程
本文转自(http://www.cnblogs.com/Leo_wl/archive/2010/06/22/1762401.html) 对于学习使用jquery 的朋友,能用的到,简单的了解下jque ...
- PL/SQL中批量执行SQL脚本(不可把所有的语句都复制到New SQL Windows)
PL/SQL中批量执行SQL脚本,不可把所有的语句都复制到New SQL Window,因为这样会导致缓冲区过大而进程卡死! 最好的办法是将要执行的SQL脚本存放到指定文件中,如C:\insert.s ...
- [MySQL] 常用SQL的优化--18.4
这里介绍下,Insert.Group By等SQL语句的优化方法: 1.大批量数据插入 当load命令导入数据的时候,可以进行适当的设置提高导入速度. 1.1 对于MyISAM表,可以先禁用非唯一索引 ...
- UCOS-2 消息邮箱与队列
一个有趣的网络解释: 信号量就是中央政府发给官人做一方大员的官印,有很多种官印但是不能一印多发,得到官印者才能掌权鱼肉一方百姓(任务得到信号量才能运行),否则你就只要等官跑官.(当然官印也可随时被政府 ...
- mycat未配置对应表导致报错
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: can't find table define in sch ...
- [Flex] Accordion系列 - Header图标的设置
<?xml version="1.0" encoding="utf-8"?> <!--Flex中如何通过getHeaderAt()函数以及se ...