c# 程序检测日志输出的类
public class LogWrite
{
public LogWrite()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
#region Constant
//单个日志文件大小
private const long FILESIZE = * * ;
//日志文件数
private const int LOGFILENUM = ;
//日志类型
private const short DEBUG = ;
private const short INFO = ;
private const short WARNING = ;
private const short ERROR = ;
//日志级别
private const short LOGLEVEL = DEBUG;
#endregion
#region Members
//日志文件路径
private string m_LogDir = System.Windows.Forms.Application.StartupPath + "\\module0\\Log";
private string m_filePath = System.Windows.Forms.Application.StartupPath + "\\module0\\Log\\Log.txt";//工作日志文件
private static LogWrite m_Log = null;
private Object objLock = new Object();
private string destClass = string.Empty;
#endregion
#region Properties
/// <summary>
/// 记录日志的类名
/// </summary>
public string DestClass
{
get { return destClass; }
set { destClass = value; }
}
#endregion
#region Ctor
#endregion
#region Public Methods
/// <summary>
/// 创建日志类实例
/// </summary>
/// <returns></returns>
public static LogWrite CreateInstance()
{
if (m_Log == null)
{
m_Log = new LogWrite();
}
return m_Log;
}
/// <summary>
/// 写信息日志
/// </summary>
/// <param name="content"></param>
public void Info(string content)
{
if (LOGLEVEL <= )
{
lock (objLock)
{
WriteLog(content, LogWrite.INFO);
}
}
}
/// <summary>
/// 写调试日志
/// </summary>
/// <param name="content"></param>
public void Debug(string content)
{
if (LOGLEVEL <= )
{
lock (objLock)
{
WriteLog(content, LogWrite.DEBUG);
}
}
}
/// <summary>
/// 写警告日志
/// </summary>
/// <param name="content"></param>
public void Warning(string content)
{
if (LOGLEVEL <= )
{
lock (objLock)
{
WriteLog(content, LogWrite.WARNING);
}
}
}
/// <summary>
/// 写错误日志
/// </summary>
/// <param name="content"></param>
public void Error(string content)
{
if (LOGLEVEL <= )
{
lock (objLock)
{
WriteLog(content, LogWrite.ERROR);
}
}
}
#endregion
#region Private Methods
/// <summary>
/// 写日志
/// </summary>
/// <param name="content"></param>
/// <param name="type"></param>
private void WriteLog(string content, short type)
{
if (content == null || content.Equals(string.Empty))
{
return;
}
try
{
if (!File.Exists(m_filePath))
{
CreateWorkLogFile();
}
if (LogFileIsTooLarge(m_filePath))
{
ProcessLogFile();
}
string strType = "";
switch (type)
{
case DEBUG:
strType = " [DEBUG] ";
break;
case INFO:
strType = " [INFO] ";
break;
case WARNING:
strType = " [WARNING] ";
break;
case ERROR:
strType = " [ERROR] ";
break;
default:
strType = " [INFO] ";
break;
}
string strContent = string.Format("{0}\t{1}\t[{2}]\t{3}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), strType, DestClass, content);
StreamWriter sWriter = new StreamWriter(m_filePath, true, System.Text.Encoding.Default);
sWriter.WriteLine(strContent);
sWriter.Flush();
sWriter.Close();
sWriter = null;
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.Message);
}
}
/// <summary>
/// 创建工作日志文件
/// </summary>
private void CreateWorkLogFile()
{
if (!Directory.Exists(m_LogDir))
{
Directory.CreateDirectory(m_LogDir);
}
FileStream fStream = new FileStream(m_filePath, FileMode.CreateNew);
fStream.Flush();
fStream.Close();
fStream = null;
}
/// <summary>
/// 判断日志文件是否超过预定义最大值
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
private bool LogFileIsTooLarge(string fileName)
{
FileInfo fi = new FileInfo(fileName);
if (fi.Length >= FILESIZE)
{
return true;
}
else
{
return false;
}
}
/// <summary>
/// 处理日志文件(工作日志文件超过最大值)
/// </summary>
private void ProcessLogFile()
{
try
{
DirectoryInfo dirInfo = new DirectoryInfo(m_LogDir);
FileInfo[] vFileInfo = dirInfo.GetFiles("*.txt");
if (vFileInfo != null && vFileInfo.Length > LOGFILENUM)
{
FileInfo oldFile = vFileInfo[];
foreach (FileInfo fi in vFileInfo)
{
if (DateTime.Compare(fi.LastWriteTime, oldFile.LastWriteTime) < )
{
oldFile = fi;
}
}
File.Delete(oldFile.FullName);
}
File.Copy(m_filePath, m_LogDir + "\\" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".txt");
File.Delete(m_filePath);
CreateWorkLogFile();
}
catch
{
}
}
#endregion
}
类的路径需要修改下,就OK 了
private string m_LogDir = System.Windows.Forms.Application.StartupPath + "\\module0\\Log";
private string m_filePath = System.Windows.Forms.Application.StartupPath + "\\module0\\Log\\Log.txt";//工作日志文件
用的时候 只要实例就行了
private LogWrite m_Log = null; //构造函数里
m_Log = module0.WritLog.LogWrite.CreateInstance();
m_Log.set_DestClass
//输出日志在地方
m_Log.Info(System.DateTime.get_Now().ToString() + " :... ");
c# 程序检测日志输出的类的更多相关文章
- 关于在Eclipse上运行Hadoop程序的日志输出问题
在安装由Eclipse-Hadoop-Plugin的Eclipse中, 可以直接运行Hadoop的MapReduce程序, 但是如果什么都不配置的话你发现Eclipse控制台没有任何日志输出, 这个问 ...
- iOS项目之使用开关控制日志输出的功能
最近一直在做sdk的项目,用户提出了一个需求,需要屏蔽sdk内部的日志输出.由于sdk内部的日志是为了调试,如果屏蔽了肯定不方便,所以研究了一下日志输出开关的功能. 在这里介绍两种实现方案:一种方案是 ...
- Log4j将不同Package的日志输出到不同的文件的方法
随着项目规模的越来越大,会不断的引入新的模块,不同的模块都会打印自己的日志,最后就造成日志根本没法查看,比如我自己的项目中,就存在以下这些日志: 接收外界消息的日志.对外发送消息的日志: 后台常驻线程 ...
- Log4j将不同Package的日志输出到不同的文件
转自:http://www.crazyant.net/1931.html 随着项目规模的越来越大,会不断的引入新的模块,不同的模块都会打印自己的日志,最后就造成日志根本没法查看,比如我自己的项目中,就 ...
- Qt编写调试日志输出类带网络转发(开源)
用qt开发商业程序已经九年了,陆陆续续开发过至少几十个程序,除了一些算不算项目的小工具外,大部分的程序都需要有个日志的输出功能,希望可以将程序的运行状态存储到文本文件或者数据库或者做其他处理等,qt对 ...
- Java基础-继承-编写一个Java应用程序,设计一个汽车类Vehicle,包含的属性有车轮个数 wheels和车重weight。小车类Car是Vehicle的子类,其中包含的属性有载人数 loader。卡车类Truck是Car类的子类,其中包含的属性有载重量payload。每个 类都有构造方法和输出相关数据的方法。最后,写一个测试类来测试这些类的功 能。
#29.编写一个Java应用程序,设计一个汽车类Vehicle,包含的属性有车轮个数 wheels和车重weight.小车类Car是Vehicle的子类,其中包含的属性有载人数 loader.卡车类T ...
- 使用Monitor调试Unity3D Android程序日志输出(非DDMS和ADB)
使用Monitor调试Unity3D Android程序日志输出(非DDMS和ADB) http://www.cnblogs.com/mrkelly/p/4015245.html 以往调试Androi ...
- springboot+logback日志输出企业实践(上)
目录 1.引言 2.logback简介 3. springboot默认日志框架-logback 3.1 springboot示例工程搭建 3.2 日志输出与基本配置 3.2.1 日志默认输出 3.2. ...
- Java自定义日志输出文件
Java自定义日志输出文件 日志的打印,在程序中是必不可少的,如果需要将不同的日志打印到不同的地方,则需要定义不同的Appender,然后定义每一个Appender的日志级别.打印形式和日志的输出路径 ...
随机推荐
- Hadoop I/O操作原理整理
I/O操作中的数据检查 校验和方式是检查数据完整性的重要方式.一般会通过对比新旧校验和来确定数据情况,如果两者不同则说明数据已经损坏.比如,在传输数据前生成了一个校验和,将数据传输到目的主机时再次计算 ...
- 欢迎进入Node.js世界
官网上(http://www.nodejs.org )给Node下的定义是:”一个搭建在Chrome JavaScript 运行时上的平台,用于构建高速.可伸缩的网络程序.Node.js采用的事件驱动 ...
- .netGDI+(转)
架上图片了你就可以在画板上涂改了啊我要写多几个字上去 string str = "Baidu"; //写什么字? Font font = Font("宋体",3 ...
- eclipse默认文件编码
eclipse里 就是在eclipse.ini文件里添加一行-Dfile.encoding=utf-8即可 -startup plugins/org.eclipse.equinox.launcher_ ...
- Linux Install VirtualBox
添加源: cd /etc/yum.repos.dwget http://download.virtualbox.org/virtualbox/rpm/rhel/virtualbox.repo 下面3个 ...
- 32. Path Sum && Path Sum II
Path Sum OJ: https://oj.leetcode.com/problems/path-sum/ Given a binary tree and a sum, determine if ...
- GLSL语言基础
from http://www.kankanews.com/ICkengine/archives/120870.shtml 变量 GLSL的变量命名方式与C语言类似.变量的名称可以使用字母,数字以及下 ...
- Excel 日期转换
public static void importExcel2(File file) throws Exception, IOException { Workbook book = Workbook. ...
- Autofac 的构造函数注入方式
介绍 该篇文章通过一个简单的 ASP.NET MVC 项目进行介绍如何使用 autofac 及 autofac 的 MVC 模块进行依赖注入.注入方式通过构造函数. 在编写 aufofac 的依赖注入 ...
- notepad++如何设置自动换行
视图(View)——>自动换行(Word wrap)