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. pytorch中的激励函数(详细版)

          初学神经网络和pytorch,这里参考大佬资料来总结一下有哪些激活函数和损失函数(pytorch表示)      首先pytorch初始化:   import torch import t ...

  2. PJzhang:QQ输入法用户许可协议和隐私政策阅读

    猫宁!!! 参考链接:http://qq.pinyin.cn/ 中国用户量最大的输入法是搜狗输入法,百度输入法也有上亿的用户量. 我下载了7个输入法,查看他们的用户许可协议和隐私政策情况.这里说的都是 ...

  3. ElasticSearch - activemq - tomcat 开机自启动

    [root@qwy ~]# cat /etc/init.d/elastisearch|grep -v '^#' export JAVA_HOME=/usr/local/java/jdk1..0_172 ...

  4. python 爬虫 基于requests模块发起ajax的get请求

    基于requests模块发起ajax的get请求 需求:爬取豆瓣电影分类排行榜 https://movie.douban.com/中的电影详情数据 用抓包工具捉取 使用ajax加载页面的请求 鼠标往下 ...

  5. 菜鸟系列Fabric——Fabric 1.2 单机部署(2)

    Fabric 1.2单机部署 https://hyperledger-fabric.readthedocs.io/en/release-1.2/whatis.html 创建目录 sudo mkdir ...

  6. jenkins自动化部署springboot

    一.linux按jar包名称部署 1.执行shell PID=$(ps -ef | grep app.jar | grep -v grep | awk '{ print $2 }') if [ -z ...

  7. 关于Java中excel表格导出的总结(Java程序导出模板和Java根据模板导出表格两种实现方式)

    导出excel通用模板(程序定义模板导出) 转载原文:https://www.jianshu.com/p/5c7b359a159c 如下代码,本方法主要用于程序定义模板格式,并导出文件.该方法将定义和 ...

  8. Asteroid Collision

    We are given an array asteroids of integers representing asteroids in a row. For each asteroid, the ...

  9. 前端开发工具包 WijmoJS 2019V1正式发布:全新的在线 Demo 系统,助您快速上手,开发无忧

    ​ 前端开发工具包WijmoJS在2019年的第一个主要版本2019V1已经发布,本次发布包括了更加易用的在线Demo系统.各控件新增功能.NPM 包的改动,以及全新的浏览器API组件. WijmoJ ...

  10. 解决ubuntu命令行中文乱码

    解决方法: 1.安装zhcon 登入用户后,输入 1 sudo apt-get install zhcon 2.启动zhcon 输入 1 zhcon --utf8  PS:zhcon支持中文输入法,按 ...