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的日志级别.打印形式和日志的输出路径 ...
随机推荐
- access remote libvirtd
访问远程libvirtd服务因为是在一个可信环境中运行,所以可以忽略安全方面的操作,步骤如下:(1)更改libvirtd配置 1.1 更改/ect/sysconfig/libvirtd文件,打开 ...
- 安全沙箱冲突:Loader.content:XX 不能访问 XX 可以通过调用 Security.allowDomain 来避免此冲突。
参考资料:http://tieba.baidu.com/p/882855105 感谢:Z0287yyy 感谢分享精神. 具体解决方案:在loader去load的时候,带上这个参数 var contex ...
- jmf找不到摄像头设备解决办法
1.安装的jdk需要时32位的. 2.在jmfregistry中注册捕获设备. 3.jar文件必须和配置文件在一起.可以新建User library把jar文件添加进去.
- (转)原始图像数据和PDF中的图像数据
比较原始图像数据和PDF中的图像数据,结果见表1.1.表1.1中各种“解码器”的解释见本文后续的“PDF支持的图像格式”部分,“PDF中的图像数据”各栏中的数据来自开源的PdfView.如果您有兴趣查 ...
- 在 SQL Server 数据库的 WHERE 语句中使用子查询
这是关于子查询语句的一系列文章中的第三篇.在这篇文章中我们将讨论WHERE语句中的子查询语句.其他的文章讨论了其他语句中的子查询语句. 本次课程中的所有例子都是基于Microsoft SQL Serv ...
- silverlight简单数据绑定3
3种数据绑定模式 OneTime(一次绑定) OneWay(单项绑定) TwoWay(双向绑定) OneTime:仅在数据绑定创建时使用数据源更新目标. 列子: 第一步,创建数据源对象让Person ...
- 配置 Gii 允许访问的 IP 地址
通过本机以外的机器访问 Gii,请求会被出于安全原因拒绝,在 config/web.php 配置 Gii 为其添加允许访问的 IP 地址: if (YII_ENV_DEV) { // configur ...
- Asp程序的IIS发布
- win10激活
听了同事忽悠,说x230这款还在保,可以直接装win10,自动激活,结果悲剧.送到联想工作站需要摧毁所有数据,然后还要2.3个小时,遂在网上找了个方法,先用着,只是不知道什么时候又变成黑户: 以管理员 ...
- 【python】django-celery 实现django项目定时任务
官方:https://pypi.python.org/pypi/django-celery/ 参考:http://www.weiguda.com/blog/73/ 参考:http://www.liao ...