.net错误日志记录(log4)
Log4
web.config
<!--这段放前面-->
<configSections>
<section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
</configSections> <log4net debug="true">
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="Log\LogDataList\\"/>
<!--file可以指定具体的路径 eg : d:\\test.log。不指定的话log被生成在项目的bin/Debug 或者 bin/Release目录下 (web的项目 默认生成在根目录下)-->
<appendToFile value="true"/>
<rollingStyle value="Date"/>
<datePattern value="yyyy-MM-dd/"log.log""/>
<param name="LockingModel" value="log4net.Appender.FileAppender.MinimalLock"/>
<maxSizeRollBackups value="1000"/>
<!--备份log文件的个数最多10个-->
<maximumFileSize value="5MB"/>
<!--每个log文件最大是2M,如果超过2M将重新创建一个新的log文件,并将原来的log文件备份。-->
<staticLogFileName value="false"/>
<layout type="log4net.Layout.PatternLayout">
<!--指定log的格式 [%M] 方法名称 -->
<conversionPattern value="-----------------------------------------------------------------------------%newline[日期:%d] %newline 日志级别:%-5level, 发生在类:%c[%M] 、%L行,%newline 描述:%m %newline"/>
</layout>
</appender>
<root>
<!--<level value="DUBEG" />-->
<!--指定将此级别及以上的log打印到log文件中-->
<appender-ref ref="RollingLogFileAppender"/>
</root>
</log4net>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls; namespace WebApplication1
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string CurrIP = "";
try
{ CurrIP = System.Web.HttpContext.Current.Request.UserHostAddress;
int i = int.Parse("tt");
}
catch (Exception ex)
{
//写入日志
string msg = "消费发生异常请及时处理【BAL.PayConsume】:\n strNumber:\n strNumber:\n goodsNumber:结果rsult:\n ip:" + CurrIP + "\n 时间:" + DateTime.Now.ToString("yyyyMMdd-hhmmss");
dalcomd.wLog(LogLevel.Error, msg, ex);
}
finally
{
//写入日志
string msg = "消费记录【BAL.PayConsume】:\n strNumber:\n strNumber:\n goodsNumber:结果rsult:\n ip:" + CurrIP + "\n 时间:" + DateTime.Now.ToString("yyyyMMdd-hhmmss");
dalcomd.wLog(LogLevel.Info, msg);
}
}
}
}
using System;
using System.Data;
using System.Text;
using log4net;
using System.IO; [assembly: log4net.Config.XmlConfigurator(Watch = true)]
namespace WebApplication1
{
public static class dalcomd
{ /// <summary>
/// 日志类
/// </summary>
private static ILog log
{
get
{
Type declaringType = System.Reflection.MethodBase.GetCurrentMethod().DeclaringType;
ILog log = log4net.LogManager.GetLogger(declaringType);
return log;
}
} /// <summary>
/// 写入运行日志
/// </summary>
/// <param name="Errorlevel">日志级别</param>
/// <param name="ErrorMsg">错误描述</param>
/// <param name="ex">异常</param>
/// <param name="age">参数列表</param>
public static void wLog(LogLevel Errorlevel, string ErrorMsg, params string[] age)
{
wLog(Errorlevel, ErrorMsg, new Exception(), age);
} /// <summary>
/// 写入运行日志
/// </summary>
/// <param name="Errorlevel">日志级别</param>
/// <param name="ErrorMsg">错误描述</param>
/// <param name="ex">异常</param>
/// <param name="age">参数列表</param>
public static void wLog(LogLevel Errorlevel, string ErrorMsg)
{
wLog(Errorlevel, ErrorMsg, new Exception());
} /// <summary>
/// 写入运行日志
/// </summary>
/// <param name="Errorlevel">日志级别</param>
/// <param name="ErrorMsg">错误描述</param>
/// <param name="ex">异常</param>
public static void wLog(LogLevel Errorlevel, string ErrorMsg, Exception ex)
{
ILog log = dalcomd.log;
switch (Errorlevel)
{
case LogLevel.Debug: log.Debug(ErrorMsg, ex); break;
case LogLevel.Info: log.Info(ErrorMsg, ex); break;
case LogLevel.Warn: log.Warn(ErrorMsg, ex); break;
case LogLevel.Error: log.Error(ErrorMsg, ex); break;
case LogLevel.Fatal: log.Fatal(ErrorMsg, ex); break;
}
} /// <summary>
/// 写入运行日志
/// </summary>
/// <param name="Errorlevel">日志级别</param>
/// <param name="ErrorMsg">错误描述</param>
/// <param name="ex">异常</param>
/// <param name="age">参数列表</param>
public static void wLog(LogLevel Errorlevel, string ErrorMsg, Exception ex, params string[] age)
{
ILog log = dalcomd.log;
StringBuilder SBParams = new StringBuilder();
foreach (string str in age)
{
SBParams.Append(str + ",");
}
ErrorMsg = ErrorMsg + "\n{参数:[" + SBParams.ToString() + "]}";
switch (Errorlevel)
{
case LogLevel.Debug: log.Debug(ErrorMsg, ex); break;
case LogLevel.Info: log.Info(ErrorMsg, ex); break;
case LogLevel.Warn: log.Warn(ErrorMsg, ex); break;
case LogLevel.Error: log.Error(ErrorMsg, ex); break;
case LogLevel.Fatal: log.Fatal(ErrorMsg, ex); break;
}
} /// <summary>
/// 自定义方法写入日志
/// </summary>
/// <param name="FilePath">路径</param>
/// <param name="FileName">文件名</param>
/// <param name="content">内容</param>
public static void LogResult(string FilePath, string FileName, string content)
{
try
{
//目录
string strFilePath = FilePath + "//" + DateTime.Now.ToString("yyyyMMdd");
//完整文件地址
string AllFilePath = strFilePath + "//" + FileName;
if (!Directory.Exists(strFilePath))
{
Directory.CreateDirectory(strFilePath);
} StreamWriter write = new StreamWriter(AllFilePath, true, System.Text.Encoding.UTF8);
write.Write(content);
write.WriteLine();
write.Close();
write.Dispose();
}
catch (Exception ex)
{
string msg = FilePath + "------" + FileName + "-----" + content;
wLog(LogLevel.Error, "自定义日志方写入异常:" + msg, ex);
}
} }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace WebApplication1
{
/// <summary>
/// LOG日志记录等级枚举
/// </summary>
public enum LogLevel
{
/// <summary>
/// Debug信息记录 调试信息
/// </summary>
Debug = , /// <summary>
/// Info信息记录 记录信息
/// </summary>
Info = , /// <summary>
/// Warn信息记录 警告信息
/// </summary>
Warn = , /// <summary>
/// Error信息记录 普通错误
/// </summary>
Error = , /// <summary>
/// Fatal信息记录 致命错误
/// </summary>
Fatal =
}
}
.net错误日志记录(log4)的更多相关文章
- 将错误日志记录在txt文本里
引言 对于已经部署的系统一旦出错对于我们开发人员来说是比较痛苦的事情,因为我们不能跟踪到错误信息,不能 很快的定位到我们的错误位置在哪,这时候如果能像开发环境一样记录一些堆栈信息就可以了,这时候我们就 ...
- PHP错误日志记录:display_errors与log_errors的区别
我们所做的东西,无论在开发环境还是在生产环境都可能会出现一些问题. 开发环境下,我们会要求错误尽可能详细的呈现出来,错误提示信息越详细越好,越详细越能帮助开发人员确定问题所在并从根本上解决他们. 生产 ...
- 日志记录~log4.net
1. 添加Log4net引用 2. 添加配置文件 Log.config <?xml version="1.0" encoding="utf-8"?> ...
- .Net Core中间件和过滤器实现错误日志记录
1.中间件的概念 ASP.NET Core的处理流程是一个管道,中间件是组装到应用程序管道中用来处理请求和响应的组件. 每个中间件可以: 选择是否将请求传递给管道中的下一个组件. 可以在调用管道中的下 ...
- 利用Image对象,建立Javascript前台错误日志记录
手记:摘自Javascript高级程序设计(第三版),利用Image对象发送请求,确实有很多优点,有时候这也许就是一个创意点,再次做个笔记供自己和大家参考. 原文: 开发 Web 应用程序过程中的一种 ...
- wpf 全局异常捕捉+错误日志记录+自动创建桌面图标
/// /// 创建桌面图标 /// public static void CreateShortcutOnDesktop(string LnkName) { String shortcutPath ...
- asp.net Web项目中使用Log4Net进行错误日志记录
使用log4net可以很方便地为应用添加日志功能.应用Log4net,开发者可以很精确地控制日志信息的输出,减少了多余信息,提高了日志记录性能.同时,通过外部配置文件,用户可以不用重新编译程序就能 ...
- PHP错误日志记录文件位置确定
1.确定web服务器 ( IIS, APACHE, NGINX 等) 以哪一种方式支持PHP,通常是有下面2种方式 通过模块加载的方式, 适用于apache 通过 CGI/fastCGI 模式, 该模 ...
- python错误日志记录工具,解决项目排错问题
我们写项目的时候难免会遇到代码报错的问题,遇到这样的问题了如何快速的定位问题并解决问题呢? 我今天来整理了利用python只带的工具来解决这个问题,我能需要使用的库有: logging os 这些都是 ...
随机推荐
- Oracle 中的伪列
昨天做了一个Oracle PL/SQL 相关的测试,其中有一道这样的题目: 下列那些是Oracle的伪列(ACD) A.ROWID B.ROW_NUMBER() C.LEVEL D.RO ...
- How to create a launcher for a manually extracted program in Ubuntu
Say we have a latest Blender extracted from the download package. We want to create a launcher for B ...
- MySQL 常用的sql语句小结(待续)
mysql 常用的sql语句 1.查看数据库各个表中的记录数 USE information_schema; SELECT table_name,table_rows FROM tables WHER ...
- 通过sqlserver发送邮件
配置过程请参考:http://www.2cto.com/database/201403/289114.html 实际中应用的扩展: 1.编写一个触发器(相当于一个多线程的发邮件的服务). 2.在应用程 ...
- Fluent Nhibernate之旅(五)--利用AutoMapping进行简单开发
Fluent Nhibernate(以下简称FN)发展到如今,已经相当成熟了,在Nhibernate的书中也相应的推荐了使用FN来进行映射配置,之前写的FN之旅至今还有很多人会来私信我问题,说来惭愧, ...
- 分布式数据库Hbase
HBase – Hadoop Database,是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群. HBase是Goog ...
- Redis JedisPool
获取连接池,通常连接池为单例,这里使用 双端检测机制保证只有一个实例 public class JedisPoolUtil { private static volatile JedisPool je ...
- Zabbix使用点滴
Application --> Items --> Triggers 1.磁盘柜日志输出至Rsyslog服务器,Zabbix抓取:System-Syslogsystem-log(log[/ ...
- spring-事务管理
一个数据库事务是一个被视为单一的工作单元的操作序列.这些操作应该要么完整地执行,要么完全不执行.事务管理是一个重要组成部分,RDBMS 面向企业应用程序,以确保数据完整性和一致性.事务的概念可以描述为 ...
- Hibernate JPA实体继承的映射(一) 概述
http://www.cnblogs.com/yingsong/p/5179975.html 注:文章中据说的实体指的是被@Entity注解的类. JPA中对象关系映射通常情况下是一个实体对应一个 ...