LogHelper
public class LogHelper
{ static string strLogCOMPath = Directory.GetCurrentDirectory() + "\\Log\\" + DateTime.Now.ToString("yyyyMMdd") + "LogJH.txt";
static string strLogErrorPath = Directory.GetCurrentDirectory() + "\\Log\\" + DateTime.Now.ToString("yyyyMMdd") + "ErrorLog.txt";
/// <summary>
/// 记录交互日志
/// </summary>
/// <param name="strLogContent">要记录的内容</param>
/// <param name="bWriteFirstLine">是否要添加第一行日志title</param>
/// <param name="strConentTitle">title内容</param>
public static void AddCOMLog(string strLogContent, bool bWriteFirstLine, string strConentTitle)
{
string time1;
time1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
if (!File.Exists(strLogCOMPath))
{
using (FileStream fs = new FileStream(strLogCOMPath, FileMode.Create, FileAccess.Write))
{
if (bWriteFirstLine)
{
StringBuilder sb1 = new StringBuilder();
sb1.Append("时间").Append(",").Append(strConentTitle).Append(",").Append("\n");
string str = sb1.ToString();
byte[] buffer = Encoding.Default.GetBytes(str);
fs.Write(buffer, , buffer.Length);
}
}
}
using (StreamWriter sw = new StreamWriter(strLogCOMPath, true, Encoding.Default))
{
StringBuilder sb = new StringBuilder();
sb.Append(time1).Append(",").Append(strLogContent).Append(",");
sw.WriteLine(sb);
}
}
/// <summary>
/// 记录错误日志
/// </summary>
/// <param name="strLogContent">要记录的内容</param>
/// <param name="bWriteFirstLine">是否要添加第一行日志title</param>
/// <param name="strConentTitle">title内容</param>
public static void AddErrorLog(string strLogContent, bool bWriteFirstLine, string strConentTitle)
{
string time1;
time1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
if (!File.Exists(strLogErrorPath))
{
using (FileStream fs = new FileStream(strLogErrorPath, FileMode.Create, FileAccess.Write))
{
if (bWriteFirstLine)
{
StringBuilder sb1 = new StringBuilder();
sb1.Append("时间").Append(",").Append(strConentTitle).Append(",").Append("\n");
string str = sb1.ToString();
byte[] buffer = Encoding.Default.GetBytes(str);
fs.Write(buffer, , buffer.Length);
}
}
}
using (StreamWriter sw = new StreamWriter(strLogErrorPath, true, Encoding.Default))
{
StringBuilder sb = new StringBuilder();
sb.Append(time1).Append(",").Append(strLogContent).Append(",");
sw.WriteLine(sb);
}
} static readonly log4net.ILog loginfo = log4net.LogManager.GetLogger("loginfo");
static readonly log4net.ILog logerror = log4net.LogManager.GetLogger("logerror");
static string isAddLog = System.Configuration.ConfigurationSettings.AppSettings.Get("isAddLog");
/// <summary>
/// 仅向日志中增加信息
/// </summary>
/// <param name="info"></param>
public static void WriteLog(string info)
{
if (isAddLog == "")
return;
if (loginfo.IsInfoEnabled)
{
loginfo.Info(info);
} }
/// <summary>
/// 记录错误日志
/// </summary>
/// <param name="ex">错误异常</param>
/// <param name="info">异常信息</param>
public static void WriteLog(Exception ex, string info)
{
if (logerror.IsErrorEnabled)
{
logerror.Error(info, ex);
}
}
}
LogHelper
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<log4net>
<!--错误日志类-->
<logger name="logerror">
<!--日志类的名字-->
<level value="ALL" />
<!--定义记录的日志级别-->
<appender-ref ref="ErrorAppender" />
<!--记录到哪个介质中去-->
</logger>
<!--信息日志类-->
<logger name="loginfo">
<level value="ALL" />
<appender-ref ref="InfoAppender" />
</logger>
<!--错误日志附加介质-->
<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
<!-- name属性指定其名称,type则是log4net.Appender命名空间的一个类的名称,意思是,指定使用哪种介质-->
<param name="File" value="Log\\LogError\\" />
<!--日志输出到exe程序这个相对目录下-->
<param name="AppendToFile" value="true" />
<!--输出的日志不会覆盖以前的信息-->
<param name="MaxSizeRollBackups" value="" />
<!--备份文件的个数-->
<param name="MaxFileSize" value="" />
<!--当个日志文件的最大大小-->
<param name="StaticLogFileName" value="false" />
<!--是否使用静态文件名-->
<param name="DatePattern" value="yyyyMMdd".html"" />
<!--日志文件名-->
<param name="RollingStyle" value="Date" />
<!--文件创建的方式,这里是以Date方式创建-->
<!--错误日志布局-->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="<HR COLOR=red>%n异常时间:%d [%t] <BR>%n异常级别:%-5p <BR>%n异 常 类:%c [%x] <BR>%n%m <BR>%n <HR Size=1>" />
</layout>
</appender>
<!--信息日志附加介质-->
<appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Log\\LogInfo\\" />
<param name="AppendToFile" value="true" />
<param name="MaxFileSize" value="" />
<param name="MaxSizeRollBackups" value="" />
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyyMMdd".html"" />
<param name="RollingStyle" value="Date" />
<!--信息日志布局-->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="<HR COLOR=blue>%n日志时间:%d [%t] <BR>%n日志级别:%-5p <BR>%n日 志 类:%c [%x] <BR>%n%m <BR>%n <HR Size=1>" />
</layout>
</appender>
</log4net>
</configuration>
log4net.config
引用添加Log4net.DLL。
捕捉异常后,调用WriteLog方法,记录日志。
try
{
代码块
}
catch (Exception ex)
{
LogHelper.WriteLog(ex, ex.Message.ToString());
}
实例
使用日志时,注意2点
1.目标框架不能使用Client Profile,否则无法找到Log4net.DLL。
2.在LogHelper的Project中Assembly程序集需要添加以下代码,否则无法写日志。
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension = "config", Watch = true)]//让程序启动时是找到Log4net.config配置文件
LogHelper的更多相关文章
- loghelper.cs 代码
唉,网上到处找一圈,真是麻烦,自己结合别人写的,重新整理一个. 这个破玩意最大的作用就是写微信那种没法顺利断点调试的程序的时候,在需要的地方写日志,然后去查看.真是回到当年用DW4写php的年代了,可 ...
- LogHelper拾遗
1.被简化之前 对已LogHelper,形如: public static void WriteError(string className,string methodName,string mess ...
- 日志记录类LogHelper
开源日志log4net使用起来很方便,但是项目中不让用,所以自己重写了一个类,用来记录日志,比较简单. 1.首先是可以把日志分成多个类型,分别记录到不同的文件中 /// <summary> ...
- C# LogHelper
using System; using log4net; using log4net.Config; namespace Utils { /// <summary> /// 日志帮助类(l ...
- LogHelper 日志记录帮助类
1.LogHelper 日志记录帮助类 using System; using System.Collections.Generic; using System.Linq; using System. ...
- LogHelper 日志
public class LogHelper : Abp.Domain.Services.DomainService { public static void Debug(object message ...
- C# 日志记录工具类--LogHelper.cs测试
C# 日志记录工具类:(适用于不想使用log4j等第三方的Log工具的时候,希望自己写个简单类实现)LogHelper.cs内容如下: using System; using System.Diagn ...
- 简单日志LogHelper
public static class LogHelper { //日志存储路径 private static string LogPath = Path.Combine(AppDomain.Curr ...
- C# 简单日志帮助类LogHelper
调用: LogHelper.Debug(""); LogHelper.Info(""); LogHelper.Error(""); 项目添加 ...
随机推荐
- 怎样提高js的编程能力
1,学习js分几个阶段,没入门,入门初学者,中级水平,高级水平,ppt水平. 2,没入门的如何学习? 我当初是先学jquery,有css和html基础,有css基础看jq的语法很简单,就是选择符,jq ...
- selenium+java:获取列表中的值
selenium+java:获取列表中的值 (2011-08-23 17:14:48) 标签: 杂谈 分类: selenium 初步研究利用java+testNg框架下写selenium测试用例,今天 ...
- SQL 批量添加的语法
.--添加一条记录 . insert into tableName(col1,col2,col3) values (val1,val2,val3) .--添加多条记录 . insert into ta ...
- 用vs2008打开sln项目总是说没有对应的,打不开vs2008的工程文件提示不支持项目类型(.csproj)
找了很多解决办法都搞不定,最后找了个老司机问了一下,原来是组件没有安装完整!!!只是安装了个vs2008的外壳...下次先检查开发工具是否完整!下载安装包安装vs再说吧!
- 2019 徐州icpc网络赛 E. XKC's basketball team
题库链接: https://nanti.jisuanke.com/t/41387 题目大意 给定n个数,与一个数m,求ai右边最后一个至少比ai大m的数与这个数之间有多少个数 思路 对于每一个数,利用 ...
- 2016年蓝桥杯省赛C++A组 消除尾一
消除尾一: 下面的代码把一个整数的二进制表示的最右边的连续的1全部变成0如果最后一位是0,则原数字保持不变. 如果采用代码中的测试数据,应该输出: 00000000000000000000000001 ...
- CF387B 【George and Round】
暴力还真的出奇迹了这题窝将读入的两个数组都先排个序,然后再枚举一遍就过了: 目前题解最短的代码QwQ.这里是代码 #include<bits/stdc++.h>using namespac ...
- c++—简单的密码本实现
主要实现功能有增删改查数据,本地读取保存. 数据存储设计 data.h data.cpp #pragma once #define 添加账户 1 #define 删除账户 2 #define 修改账户 ...
- 平面割线平分点(构造)--牛客第三场-- Magic Line
题意: 给你n个点的坐标,让你给出两个点,这两个点的连线可以平分这些点. 思路: 先按y的大小排序,在按x的小排序,再搞一下就行了.如下图: #include <bits/stdc++.h> ...
- Ruby学习中(哈希变量/python的字典, 简单的类型转换)
一. 哈希变量(相当于Python中的字典) 详情参看:https://www.runoob.com/ruby/ruby-hash.html 1.值得注意的 (1). 创建Hash时需注意 # 创建一 ...