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的日志级别.打印形式和日志的输出路径 ...
随机推荐
- JAVA_Java中关于supper和this的理解
2015-04-04 Created By BaoXinjian
- RxJava_ _学了下RxJava
之前就知道有RxJava这玩意,知道这玩意很屌,不过也就止于看看标题,看几段介绍的程度(懒癌害人不浅).这周心血来潮,抽空把之前收藏的 扔物线 大神写的RxJava入门文章看了. http://gan ...
- httpwebrequest详解【转】
http://blog.csdn.net/sjj2011/article/details/7823392 HttpWebRequest和HttpWebResponse类是用于发送和接收HTTP数据的最 ...
- cocos2dx音乐与音效
// 预加载音乐和音效 SimpleAudioEngine::sharedEngine()->preloadBackgroundMusic(CCFileUtils::sharedFileUtil ...
- 记一个eclipse 错误 Undefined variable from import: randrange
我自己定义了一个random.py 和pev的包含路径一样的 解决办法是: 出现这种问题,可以import 这个模块,print 这个模块
- qt编程入门
面对qt编程,必须先知道qt中常用的类: QPushButton按钮类.QLabel标签类.QMessageBox对话框类.QCheckBox.QAction.QMenu.QStatusBar.QTo ...
- noip2007解题报告
T1.统计数字 给出n个数,统计每个数字出现的个数. n小,快排解决. T2.字符串的展开 给出一个字符串,其中形如 d-h,4-9之类的就展开,(前面比后面小的保留,相等也是),三个参数,P1表示大 ...
- java中常用数据类型转换器
/** * 把String转换成long * * @param src 要转换的String * @param def 转换失败时返回此值 * @return 转换好的long */ public s ...
- mysql Can't connet MySQL server to '@localhost'
10063/10060/10038好像都能解决 mysql -nt -remove mysql -nt install
- <COM原理和应用>第七章的ITextObject代码是什么?
第7章中有如下的描述:-----------------------------------为了在程序中使用"Text.Object"文本对象,我们利用ClassWizard引 ...