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. git merge --squash 选项合并commit操作实例

     参考: [转] git merge 将多个commit合并为一条之--squash 选项 git checkout master git pull origin master # 本地先拉取最新的m ...

  2. spring-boot集成4:集成mybatis,druid和tk.mybatis

    Why mybatis? mybatis提供了ORM功能,相比于其他ORM框架,其需要编写更多的sql,也给了我们编写特殊/复杂sql和进行sql优化的机会. Why druid? Druid是阿里巴 ...

  3. DataTable.Select筛选过滤数据返回DataRow[]转为DataTable添加到DataSet

    问题还原,如图所示,我们要筛选所有SHDP 为北京翠微KR的数据. 1. 筛选DataTable微软为我们提供了一个方法DataTable.Select(),其用法如下: 1)  Select()—— ...

  4. PJzhang:crunch,一个很好的字典生成工具

    猫宁!!! 之前收集子域名的时候使用过子域名挖掘机这个windows软件,查看了它所使用的字典,基本上是小写字母数字1-4位的一个合集.   36+36*36+36*36*36+36*36*36*36 ...

  5. 《Linux命令行大全》 笔记记录

    1.Shell是什么 2.(文件目录)导航 3.Linux系统 4.操作文件和目录 5.命令的使用 6.重定向 7.透过shell看世界 扩展 引用 8.高级键盘技巧 9.权限 10.进程 11.环境 ...

  6. 应用安全 - JavaScript - 框架 - Jquery - 漏洞 - 汇总

    jQuery CVE-2019-11358 Date 类型 原型污染 影响范围 CVE-2015-9251  Date 类型跨站 影响范围<jQuery 3.0.0

  7. 使用choco 在windows 环境安装kubectl 并配置

    首先安装choco #以管理员身份运行cmd命令 @"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -N ...

  8. vue--vue-resource实现 get, post, jsonp请求

    vue-resource 实现 get, post, jsonp请求 除了 vue-resource 之外,还可以使用 axios 的第三方包实现实现数据的请求 之前的学习中,如何发起数据请求? 常见 ...

  9. PTA(Basic Level)1027.打印沙漏

    本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 ***** *** * *** ***** 所谓"沙漏形状",是指每行 ...

  10. [转帖]开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别

    开源许可证GPL.BSD.MIT.Mozilla.Apache和LGPL的区别 https://www.geek-workshop.com/thread-1860-1-1.html     liamj ...