以c#实现轻量级的日志管理,着实简单,置一静态类记之:

    /// <summary>
/// 日志管理
/// </summary>
public static class LogHelper
{
//超过3M则清除
const int MAX_LOG_SIZE = * * ; public static void Init(string fileName)
{
CheckAndCleanLogFile(fileName); bool firstWrite = !File.Exists(fileName);
var traceListener = new TimeTextWriterTraceListener(fileName);
//TraceOptions.DateTime,在以Trace.TraceError、Trace.TraceWarning等方式输出信息时,全加入日期信息
traceListener.TraceOutputOptions |= TraceOptions.DateTime;
Trace.Listeners.Add(traceListener);
Trace.AutoFlush = true; //初始日志
if (firstWrite)
Trace.WriteLine(string.Format("OS Version: {0}", Environment.OSVersion.ToString()));
Trace.WriteLine("\r\n" + new string('-', ));
Trace.WriteLine(string.Format("Program Start: {0} v{1}", Application.ProductName, Application.ProductVersion));
} private static void CheckAndCleanLogFile(string fileName)
{
if (!File.Exists(fileName))
return; try
{
var fi = new FileInfo(fileName);
if (fi.Length > MAX_LOG_SIZE)
File.Delete(fileName);
}
catch
{
}
} private class TimeTextWriterTraceListener : TextWriterTraceListener
{
public TimeTextWriterTraceListener(string fileName)
: base(fileName)
{
} public override void WriteLine(string message)
{
if (string.IsNullOrEmpty(message))
return; if ((this.TraceOutputOptions & TraceOptions.DateTime) == TraceOptions.DateTime && !message.Contains("--------"))
base.Write(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " ");
base.WriteLine(message);
}
}
}

使用方法:

string logFile = Path.ChangeExtension(Process.GetCurrentProcess().MainModule.FileName, ".log");
LogHelper.Init(logPath);

那么,程序中所有Trace.xxx输出的信息,就都会被记录下来。

c#: 简单的日志管理类(TextWriterTraceListener)的更多相关文章

  1. Log4J日志管理类使用详解 (转)

    一.前言: log4j 是一个开放源码项目,是广泛使用的以Java编写的日志记录包.由于log4j出色的表现, 当时在log4j完成时,log4j开发组织曾建议sun在jdk1.4中用log4j取代j ...

  2. SpringAOP+注解实现简单的日志管理

    今天在再次深入学习SpringAOP之后想着基于注解的AOP实现日志功能,在面试过程中我们也经常会被问到:假如项目已经上线,如何增加一套日志功能?我们会说使用AOP,AOP也符合开闭原则:对代码的修改 ...

  3. commons-logging和Log4j 日志管理/log4j.properties配置详解

    commons-logging和Log4j 日志管理 (zz) 什么要用日志(Log)? 这个……就不必说了吧. 为什么不用System.out.println()? 功能太弱:不易于控制.如果暂时不 ...

  4. 项目log4j日志管理详解

    项目log4j日志管理详解 log4j日志系统在项目中重要性在这里就不再累述,我们在平时使用时如果没有特定要求,只需在log4j.properties文件中顶入输出级别就行了.如果要自定义输出文件,对 ...

  5. LogCook 一个简单实用的Android日志管理工具

    众所周知,日志的管理是软件系统很重要的一部分,千万不可忽略其重要性.完整的日志将会在系统维护中起着异常重要的作用,就好像磨刀不误砍柴工一样,日志就像对系统进行分析的工具,工具便捷了,对系统分析起来就能 ...

  6. Log4j日志管理的简单实例

    大型项目中非常多情况下要分析程序的日志信息,怎样管理自己的日志信息至关重要. 在应用程序中加入日志记录总的来说基于三个目的 , 监视代码中变量的变化情况,周期性的记录到文件里供其它应用进行统计分析工作 ...

  7. SQL Server中的事务日志管理(4/9):简单恢复模式里的日志管理

    当一切正常时,没有必要特别留意什么是事务日志,它是如何工作的.你只要确保每个数据库都有正确的备份.当出现问题时,事务日志的理解对于采取修正操作是重要的,尤其在需要紧急恢复数据库到指定点时.这系列文章会 ...

  8. 一个可创建读取日志的管理类(可固定创建2M大小的日志文件)

    这里,将日志管理基类命名为LogManagerBase(抽象类),具体的不同类型的日志可以通过继承完成.该基类可将日志以每个2M的方式存储起来,并可以读取当前正在使用的日志的所有内容. 要实现该基类, ...

  9. C++ 最简单的日志类

    最近搞一个 C++ 项目的二次开发,没玩过 C++,可谓步履维艰.自己写个简单的日志类都被各种坑折磨.终于搞定了. 参考了这篇博客,并且进一步简化:https://www.cnblogs.com/Ds ...

随机推荐

  1. ORA-02275: 此表中已经存在这样的引用约束条件

    问题描述: 针对这个问题,发表一下我的观点.emp表和dept表使用hibernate关联查询时报的错,使用的是非注解形式,和其他一样.他们各自有entity,各自有一个hbm.xml文件,emp表这 ...

  2. 第一章 C#入门 (Windows窗体应用程序)(一)

    我的第一个窗体应用程序(一) [案例说明]  在文本框中显示一行文字“Hello C#!”,单击[显示]按钮后在文本框中显示文字:单击[清除]按钮后清除文本框中的内容. [案例实现步骤] 1.新建项目 ...

  3. py-day2-3 python 字典

    # 字典的value可以是任何值 test = {'k1':'v1', 'k2':True, 'k3':[1,2,3,4,{'t1':'v2','t2':'v3'},5,6], 'k4':(88,99 ...

  4. sql job定时备份数据库

    ---------------------------------------- 对TestDB1进行备份 ---------------------------------------- decla ...

  5. requests库(爬虫)

    北京理工大学嵩天老师的课程:http://www.icourse163.org/course/BIT-1001870001 官方文档:http://docs.python-requests.org/e ...

  6. Delphi 7升级到XE2的字符串问题

    原来的Delphi中有两种字符串:AnsiString和WideString.默认的string即AnsiString.而在Delphi 2009中,新增加了一种UnicodeString.为什么不沿 ...

  7. 获得驱动器信息卷设备&&Ring3得到磁盘文件系统(NTFS WIN10)

    // GetLogicalDriveStrings.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <Windows ...

  8. 涨知识:equals 和 == 你真的了解吗?

    基本概念 ==是运算符,比较的是两个变量是否相等: equals()是Object方法,用于比较两个对象是否相等 看一下源码: public boolean equals(Object anObjec ...

  9. 笔记本 原来win10系统改装win7系统遇到 invaid signature detected.check secure boot policy setup问题

    这次操作的笔记本电脑是   华硕R414U 大家如果遇到类似问题的话也可以参考这个方法,但是必须搞清楚电脑的型号,型号不同操作起来有差别的 我这里选择的重装系统的方法是最简单粗暴的硬盘安装方法,怎么硬 ...

  10. Python · 进度条

    (这里是本章会用到的 GitHub 地址) 我实现的这个进度条可能是可以当做一个第三方库来使用的(这个人好自大,啧),它支持记录并发程序的进度且损耗基本只来源于 Python 本身 先来看看我们的进度 ...