public string logFile;
private int configLogLevel = ;
private Stream s = null;
StreamWriter sw = null; /// <summary>
/// 用log文件名初始化对象
/// </summary>
/// <param name="logFile"></param>
public WriteLog(string logFile)
{
this.logFile = logFile;
initFile();
} /// <summary>
/// 用log文件名和配置的log级别初始化对象
/// </summary>
/// <param name="logFile"></param>
/// <param name="configLevel"></param>
public WriteLog(string logFile,int configLevel)
{
this.logFile = logFile;
this.configLogLevel = configLevel;
initFile();
} ~WriteLog()
{
//析构函数,释放资源
//if (sw != null)
//{
// sw.Flush();
// sw.Close();
//}
//if (s != null)
//{
// s.Flush();
// s.Close();
//}
} /// <summary>
/// 初始化文件流
/// </summary>
private void initFile()
{
try
{
if (this.logFile == null || this.logFile == "") return; string path = "";
string fileName = "";
if (this.logFile.IndexOf("\\") >= )
{
path = this.logFile.Substring(,this.logFile.LastIndexOf("\\")+);
fileName = this.logFile.Substring(this.logFile.LastIndexOf("\\")+);
}
else if (this.logFile.IndexOf("/") >= )
{
path = this.logFile.Substring(, this.logFile.LastIndexOf("/")+);
fileName = this.logFile.Substring(this.logFile.LastIndexOf("/") + );
}
else
{
return;
}
string dateStr = DateTime.Now.ToString("yyyyMMdd");
path += dateStr;
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
fileName = path + "\\"+ fileName; if (File.Exists(fileName))
{
s = new FileStream(fileName, FileMode.Append, FileAccess.Write);
}
else
{
//CommonFunction.createDir(this.logFile.Substring(0, this.logFile.LastIndexOf(@"\")));
s = new FileStream(fileName, FileMode.CreateNew, FileAccess.Write);
s.Flush();
s.Close();
s = new FileStream(fileName, FileMode.Append, FileAccess.Write);
} sw = new StreamWriter(s, Encoding.Default);//创建Stream流,指定编码方式
//sw.AutoFlush = true;
}
catch (Exception ex)
{
throw ex;
}
} /// <summary>
/// 如果当前log级别小于配置设定的log级别时才将log内容写到日志文件中
/// </summary>
/// <param name="logLevel">当前log的级别</param>
/// <param name="configLevel">配置设定的log级别</param>
/// <param name="logContent">log内容</param>
//[MethodImpl(MethodImplOptions.Synchronized)]
public void log(int logLevel,int configLevel,string logContent)
{
//如果当前log级别小于配置设定的log级别时才将log内容写到日志文件中
if (logLevel < configLevel && sw != null && s != null)
{
try
{
lock (sw)
{
sw.WriteLine(DateTime.Now.ToString() + "." + DateTime.Now.Millisecond.ToString() + ":logLevel=" + logLevel + " ;configLevel=" + configLevel + " ;" + logContent);
sw.Flush();
//s.Flush();
}
}
catch (Exception ex)
{
ex.ToString();
} }
} /// <summary>
/// 如果当前log级别小于配置设定的log级别时才将log内容写到日志文件中
/// </summary>
/// <param name="logLevel">当前log的级别</param>
/// <param name="logContent">log内容</param>
//[MethodImpl(MethodImplOptions.Synchronized)]
public void log(int logLevel, string logContent)
{
//如果当前log级别小于配置设定的log级别时才将log内容写到日志文件中
if (logLevel < this.configLogLevel && sw != null && s != null)
{
try
{
lock (sw)
{
sw.WriteLine(DateTime.Now.ToString() + "." + DateTime.Now.Millisecond.ToString() + ":logLevel=" + logLevel + " ;configLevel=" + configLogLevel + " ;" + logContent);
sw.Flush();
//s.Flush();
}
}
catch (Exception ex)
{
ex.ToString();
} }
} /// <summary>
/// 如果当前log级别小于配置设定的log级别时才将log内容写到日志文件中
/// </summary>
/// <param name="logLevel">当前log的级别</param>
/// <param name="logContent">log内容</param>
/// <param name="method">log抛出调用的方法名</param>
//[MethodImpl(MethodImplOptions.Synchronized)]
public void log(int logLevel, string logContent,string methodName)
{
//如果当前log级别小于配置设定的log级别时才将log内容写到日志文件中
if (logLevel < this.configLogLevel && sw != null && s != null)
{
try
{
lock (sw)
{
sw.WriteLine(DateTime.Now.ToString() + "." + DateTime.Now.Millisecond.ToString() + ":logLevel=" + logLevel + " ;configLevel=" + configLogLevel + " ;method=" + methodName + ";content=" + logContent);
sw.Flush();
//s.Flush();
}
}
catch (Exception ex)
{
ex.ToString();
}
}
} public void close()
{
try
{
if (sw != null)
{
sw.Flush();
sw.Close();
}
if (s != null)
{
s.Flush();
s.Close();
}
}
catch (Exception ex)
{
ex.ToString();
}
}

程序中编写log日志的更多相关文章

  1. 注释和取消注释 程序中的log日志

    有点简单,但也是原创哦..亲测有效,期待指正. 更改了log多行的问题.. 例如//Log Util: 一.注释log    import java.io.BufferedReader;import ...

  2. 在C#中winform程序中应用nlog日志工具

    在C#中winform程序中应用nlog日志工具,配置文件简单应用. 文件名 nlog.config,请注意修改属性为"始终复制",发布时候容易遇到不存在文件的错误提示. 通过Nu ...

  3. java中关于log日志

    博:http://zhw2527.iteye.com/blog/1006302 http://zhw2527.iteye.com/blog/1099658 在项目开发中,记录错误日志是一个很有必要功能 ...

  4. Android教程-02 在程序中输出Log

    视频教程,建议采用超清模式观看 在Android中一般都用Log输出日志,常见的有5个不同的级别 Log.v() Log.d() Log.i() Log.w() Log.e() 当然很多程序员还比较习 ...

  5. 对于是否在一个python程序中编写函数的启发

    那我们到底是应该直接使用这些模块级别的函数呢,还是先编译一个模式对象,再调用模式对象的方法呢?这其实取决于正则表达式的使用频率,如果说我们这个程序只是偶尔使用到正则表达式,那么全局函数是比较方便的:如 ...

  6. 如何查看MapReduce执行的程序中的输出日志

    我们开发程序的时候,好多人都喜欢用sysout输出内容来查看运行情况.但是在MR程序里写了之后,却不知道去哪里查找,可以参考这篇文章. 第一种方法,我们可以在MapReduce任务查看页面找到这些日志 ...

  7. Android中对Log日志文件的分析[转]

    一,Bug出现了, 需要“干掉”它 bug一听挺吓人的,但是只要你懂了,android里的bug是很好解决的,因为android里提供了LOG机制,具体的底层代码,以后在来分析,只要你会看bug, a ...

  8. Mybatis中在log日志或控制台打印执行的sql

    最近在调试代码时,需要查看当前操作执行的sql,在日志里没查到,经过修改logback配置后成功,现记录如下:一.Mybatis版本是3.0.6(我正在用的版本)该版本只需要修改logback.xml ...

  9. ASP.NET Core 1.0 中使用 Log 日志配置

    https://github.com/aspnet/Logging https://docs.asp.net/en/latest/fundamentals/logging.html ASP.NET C ...

随机推荐

  1. 看到个有趣的方法批量下载rtf模板

    一般想要批量下载rtf模板我们都是用fndload来实现或者 perl download.pl来实现,今天看到一个比较有趣的方法 Hi, Blob column 'template file data ...

  2. Android平台 Psensor传感器调试方法

    一. 驱动层调试1.在板级dts文件中增加相应的dts代码,如:调试sensor类,在代码中找到已经有的代码在修改,I2C使用那根(一般为I2C3),I2C地址(找datasheet或者FAE),哪个 ...

  3. 手把手教你打造一个心电图效果View Android自定义View

    大家好,看我像不像蘑菇-因为我在学校呆的发霉了. 思而不学则殆 丽丽说得对,我有奇怪的疑问,大都是思而不学造成的,在我书读不够的情况下想太多,大多等于白想,所以革命没成功,同志仍需努力. 好了废话不说 ...

  4. Dynamics CRM 修改自定义实体名字及属性前缀(架构名称)

    本文章以2013为例(2011同理,4.0比较简单直接在系统设置的自定义中设置即可). 1.设置-->自定义项-->发布者,下图中的红框内的即为需要设置的前缀. 2.设置-->解决方 ...

  5. R--线性回归诊断(一)

    线性回归诊断--R [转载时请注明来源]:http://www.cnblogs.com/runner-ljt/ Ljt   勿忘初心  无畏未来 作为一个初学者,水平有限,欢迎交流指正. 在R中线性回 ...

  6. 【60】Spring总结之基础架构(1)

    为什么用Spring? Spring一直贯彻并遵守"好的设计优于具体实现,代码应易于测试",这一理念,并最终带给我们一个易于开发.便于测试而又功能齐全的开发框架.概括起来Sprin ...

  7. 【Java编程】随机数的不重复选择

    随机数的不重复选择就是从n个数中随机选取m(m<n)个数.在本文中,我们用Java来实现.因此我们先介绍Java的相关知识. 在Java中,Java.util.Set接口和Java.util.L ...

  8. Java 条形码生成(一维条形码)

    utl:http://mianhuaman.iteye.com/blog/1013945 在这里给大家介绍一个java 生成条形码 jbarcode.jar 生成条形码 支持EAN13, EAN8, ...

  9. MarioTCP:一个单机可日30亿的百万并发长连接服务器

    原文:http://blog.csdn.net/everlastinging/article/details/10894493 注:如果用此服务器做变长data的传输,请在业务处理函数中为input ...

  10. 关于Html5发展和应用前景

    现在的HTML5就像当年崭露头角时的Ajax,有人在做,但不知道叫它什么.最近,苹果在 HTML5上大做文章,而著名的Web设计师Eric Meyer则提出了Web Stacks的概念.Alex Ke ...