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&quot;.html&quot;" />
<!--日志文件名-->
<param name="RollingStyle" value="Date" />
<!--文件创建的方式,这里是以Date方式创建-->
<!--错误日志布局-->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="&lt;HR COLOR=red&gt;%n异常时间:%d [%t] &lt;BR&gt;%n异常级别:%-5p &lt;BR&gt;%n异 常 类:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;" />
</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&quot;.html&quot;" />
<param name="RollingStyle" value="Date" />
<!--信息日志布局-->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="&lt;HR COLOR=blue&gt;%n日志时间:%d [%t] &lt;BR&gt;%n日志级别:%-5p &lt;BR&gt;%n日 志 类:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;" />
</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的更多相关文章

  1. loghelper.cs 代码

    唉,网上到处找一圈,真是麻烦,自己结合别人写的,重新整理一个. 这个破玩意最大的作用就是写微信那种没法顺利断点调试的程序的时候,在需要的地方写日志,然后去查看.真是回到当年用DW4写php的年代了,可 ...

  2. LogHelper拾遗

    1.被简化之前 对已LogHelper,形如: public static void WriteError(string className,string methodName,string mess ...

  3. 日志记录类LogHelper

    开源日志log4net使用起来很方便,但是项目中不让用,所以自己重写了一个类,用来记录日志,比较简单. 1.首先是可以把日志分成多个类型,分别记录到不同的文件中 /// <summary> ...

  4. C# LogHelper

    using System; using log4net; using log4net.Config; namespace Utils { /// <summary> /// 日志帮助类(l ...

  5. LogHelper 日志记录帮助类

    1.LogHelper 日志记录帮助类 using System; using System.Collections.Generic; using System.Linq; using System. ...

  6. LogHelper 日志

    public class LogHelper : Abp.Domain.Services.DomainService { public static void Debug(object message ...

  7. C# 日志记录工具类--LogHelper.cs测试

    C# 日志记录工具类:(适用于不想使用log4j等第三方的Log工具的时候,希望自己写个简单类实现)LogHelper.cs内容如下: using System; using System.Diagn ...

  8. 简单日志LogHelper

    public static class LogHelper { //日志存储路径 private static string LogPath = Path.Combine(AppDomain.Curr ...

  9. C# 简单日志帮助类LogHelper

    调用: LogHelper.Debug(""); LogHelper.Info(""); LogHelper.Error(""); 项目添加 ...

随机推荐

  1. 前端常用资源地址: http://www.htmleaf.com/

    前端常用资源地址: http://www.htmleaf.com/

  2. JavaScript高程第三版笔记-面向对象编程

    之前有篇博客曾提到过一点js的面向对象编程:js面向对象编程. 这里就结合js高程详细剖析一下javascript的面向对象编程. 前序: 1⃣️Object.defineProperty() var ...

  3. windows下sqlplus怎么连接远程oracle

    语法:sqlplus usr/pwd@//host:port/sid [oracle@mzl ~]$ sqlplus system/51411482@//192.168.21.11:1521/orcl ...

  4. PJzhang:关闭wps小广告和快速关闭445端口

    猫宁!!! ​​   kali linux上安装的wps,没有广告,而且轻巧简洁.   如果你在windows上安装wps,除了ppt.word.excel,还会有一个h5的应用,当然,最令人烦扰的当 ...

  5. WTForms常用的验证器

    from wtforms import Form,StringField,IntegerField from wtforms import validators from wtforms.valida ...

  6. mongodb 后台启动命令记录

    安装 解压到bin目录 , --logpath 属性必填 ./mongod --fork --dbpath=/home/mongodb/data --bind_ip=0.0.0.0 --port 36 ...

  7. [转帖]rpm包和deb分别是什么?

    https://www.cnblogs.com/hanfanfan/p/9133789.html 需要不停的学习才可以. 一.RMP 是 LINUX 下的一种软件的可执行程序,你只要安装它就可以了.这 ...

  8. 【Bell-Ford 算法】CLRS Exercise 24.1-4,24.1-6

    本文是一篇笔记,大部分内容取自 CLRS 第三版,第 24.1 节. Exercise 24.1-4 Modify the Bellman-Ford algorithm so that it sets ...

  9. 创建Maven Web项目时很慢解决办法

    点击加号,Name输入archetypeCatalog,Value输入internal archetypeCatalog表示插件使用的archetype元数据,不加这个参数时默认为remote,loc ...

  10. C++游戏服务器编程笔记 IP详解

    C++游戏服务器编程笔记 IP详解 IP详解 INTERNET的历史 上世纪60年底起源于美国 1992年,Internet上的主机超过了100万台 现在已经是现代文明人的必需品    TCP/IP的 ...