C#通用类库整理--日志记录
日志的记录是将程序过程中的一些行为数据记录下来,方便开发、运维迅速的找到问题的所在,节省时间。使用时在
站点的web.config 中的<appSettings></appSettings>节点中增加:
<!-- 日志路径 -->
<add key="LogDirectory" value="E:\TextLog" />
<!-- 日志名称 -->
<add key="ProgramName" value="日志记入类" />
private static string LogDirectory = ConfigurationManager.AppSettings["LogDirectory"];
private static string programName = ConfigurationManager.AppSettings["ProgramName"];
/// <summary>
/// 是否入库 web.config配置 UniteLogStart
/// </summary>
//private static string isInLog = ConfigurationManager.AppSettings["UniteLogStart"];
private static string isInLog;
public LogProxy()
{ } /// <summary>
/// 重载功能操作日志入库
/// </summary>
/// <param name="text">错误信息</param>
/// <param name="userid">用户名</param>
/// <param name="scode">功能id</param>
public static void Write(string text, string userid, string scode, Database m_DataBase)
{
try
{
if (isInLog != null || isInLog == "")//是否入库
{
//插入该操作
string tmpSQL = String.Format("insert into SYS_USER_LOG(USER_ID,CLIENT_IP,BUSINESS_NAME,BUSINESS_ID,IS_SUCCESS) values('{0}','{1}',F_GET_BUSINESSNAME('{2}'),'{2}','1')", userid, HttpContext.Current.Request.UserHostAddress, scode);
m_DataBase.ExecuteNonQuery(m_DataBase.GetSqlStringCommand(tmpSQL));
}
}
catch (Exception e)
{
WriteExp("操作日志插入错误:" + e.Message);
} string directory = GetFullDirectory();
string fileName = Thread.CurrentThread.Name + ".log";
LogWriter.Writer(directory, fileName, text); }
/// <summary>
/// 重载是否错误日志入库
/// </summary>
/// <param name="text">错误信息</param>
/// <param name="userid">用户名</param>
/// <param name="scode">功能id</param>
public static void WriteExp(string text, string userid, string scode, Database m_DataBase)
{ try
{
if (isInLog != null || isInLog == "")//是否入库
{
//插入该操作
string tmpSQL = String.Format("insert into SYS_USER_LOG(USER_ID,CLIENT_IP,BUSINESS_NAME,BUSINESS_ID,IS_SUCCESS,FAILURE_EXCEPTION) values('{0}','{1}',F_GET_BUSINESSNAME('{2}'),'{2}','1','{3}')", userid, HttpContext.Current.Request.UserHostAddress, scode, text);
m_DataBase.ExecuteNonQuery(m_DataBase.GetSqlStringCommand(tmpSQL));
}
}
catch (Exception e)
{
throw new Exception(e.Message);
}
string directory = GetFullDirectory();
string fileName = Thread.CurrentThread.Name + "_Exp.log";
LogWriter.Writer(directory, fileName, text);
} /// <summary>
/// 针对多线程的应用程序写日志
/// </summary>
/// <param name="text"></param>
public static void Write(string text)
{
string directory = GetFullDirectory();
string fileName = Thread.CurrentThread.Name + ".log";
LogWriter.Writer(directory, fileName, text); }
public static void WriteExp(string text)
{
string directory = GetFullDirectory();
string fileName = Thread.CurrentThread.Name + "_Exp.log";
LogWriter.Writer(directory, fileName, text);
}
public static void WriteDug(string text)
{
string directory = GetFullDirectory();
string fileName = Thread.CurrentThread.Name + "_Dug.log";
LogWriter.Writer(directory, fileName, text);
}
/// <summary>
///
/// </summary>
/// <param name="e"></param>
public static void WriteExp(System.Exception e)
{
WriteExp(e.Message + "\r\n" + e.StackTrace);
}
public static void WriteTest(string text)
{
string directory = GetFullDirectory();
string fileName = Thread.CurrentThread.Name + "_test.log";
LogWriter.Writer(directory, fileName, text);
}
public static void WriteKeeper(string text, string keepersn)
{
string directory = GetFullDirectory();
string fileName = keepersn + ".log";
LogWriter.Writer(directory, fileName, text);
} /// <summary>
/// 针对单线程的应用程序写日志
/// </summary>
/// <param name="text"></param>
public static void STWrite(string text)
{
string directory = GetFullDirectory();
string fileName = programName + ".log";
LogWriter.Writer(directory, fileName, text);
}
public static void STWriteExp(string text)
{
string directory = GetFullDirectory();
string fileName = programName + "_Exp.log";
LogWriter.Writer(directory, fileName, text);
}
public static void STWrite(string filePrefixName, string text)
{
string directory = GetFullDirectory();
string fileName = filePrefixName + ".log";
LogWriter.Writer(directory, fileName, text);
}
public static void STWriteExp(string filePrefixName, string text)
{
string directory = GetFullDirectory();
string fileName = filePrefixName + "_Exp.log";
LogWriter.Writer(directory, fileName, text);
} private static string GetFullDirectory()
{
return LogDirectory + "\\"
+ DateTime.Now.ToString("yyyy-MM") + "\\" + DateTime.Now.Day.ToString()
+ "\\" + programName;
}
internal class LogWriter
{ public LogWriter()
{ } [MethodImpl(MethodImplOptions.Synchronized)]
public static void Writer(string directory, string fileName, string text)
{
CheckDirectory(directory);
using (StreamWriter sw = new StreamWriter(directory + "\\" + fileName, true, Encoding.UTF8))
{
sw.Write(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss "));
sw.WriteLine(" " + text);
sw.WriteLine("-------------------------------------------");
}
}
private static void CheckDirectory(string directory)
{
if (!Directory.Exists(directory))
{
Directory.CreateDirectory(directory);
}
}
}
以上是两个类库的代码。在程序中使用:
LogProxy.WriteExp("Come in ");
C#通用类库整理--日志记录的更多相关文章
- 【C#通用类】日志记录类
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...
- C#通用类库整理--字符串处理类
在程序开发中通常需要将字符串转为自己想要的结果,以下三个类库主要实现: 1.GetStrArray(string str, char speater, bool toLower) 把字符串按照分隔符 ...
- C#通用类库整理--序列化类
程序员在编写应用程序的时候往往要将程序的某些数据存储在内存中,然后将其写入某个文件或是将它传输到网络中的另一台计算机上 以实现通讯.这个将程序数据转化成能被存储并传输的格式的过程被称为"序列 ...
- C# 面向切面编程--监控日志记录方案
背景:现在公司整体在做监控平台,要求把各个部分的细节都记录下来,在前台页面上有所显示,所以现在需要做的就是一个监控日志的记录工作,今天讲的就是渲染监控日志的例子. 现状:当前的渲染程序没有为监控日志记 ...
- 日志记录类库log4net的使用总结
log4net是一个开源的日志记录类库,经过配置后可以自动抓取程序中的错误.异常信息,并写入磁盘,也可以在异常发生时执行其他指定的操作,比如:通知某人右键.写入数据库等.这里写个ASP.NET MVC ...
- 类库里面添加日志记录 log4net
第一步: 新建一个公共类库common,添加CustomLog4jLogger.cs 并引用log4net.dll /// <summary> /// 日志记录 /// </summ ...
- JAVA实现通用日志记录
原文:http://blog.csdn.net/jinzhencs/article/details/51882751 前言: 之前想在filter层直接过滤httpServerletRequest请求 ...
- 【个人使用.Net类库】(2)Log日志记录类
开发接口程序时,要保证程序稳定运行就要时刻监控接口程序发送和接收的数据,这就需要一个日志记录的类将需要的信息记录在日志文件中,便于自己维护接口程序.(Web系统也是如此,只是对应的日志实现比这个要复杂 ...
- 【干货】.NET开发通用组件发布(四) 日志记录组件
组件介绍和合作开发 http://www.cnblogs.com/MrHuo/p/MrHuoControls.html 日志记录组件功能介绍 通过基类Logger,实现了文本记录日志和数据库记录日志两 ...
随机推荐
- 【11】openlayers 地图交互
地图交互interaction 关于map的方法: //添加地图交互 map.addInteraction(interaction) //删除地图交互 map.removeInteraction(in ...
- Ctrl+F5和F5区别
F5刷新的内容是从本地缓存中读取刷新,刷新本地缓存 Ctrl+F5直接读取服务器上的最新的内容—— Ctrl+F5会把Internet 临时文件夹的文件删除再重新从服务器下载,也就是彻底刷新页面了.. ...
- ES6中的Promise使用总结
One.什么是Promise? Promise是异步编程的解决方案,而它本身也就是一个构造函数,比传统的异步解决[回调函数]和[事件]更合理,更强大. Two.Promise有何作用? 作用:解决回调 ...
- c++作业22题
一.单选题(共22题,100.0分) 1 已知int i=5,下列do-while循环语句的循环次数是 do{ cout<<i - -<<endl; i - -; }while ...
- 关于SDL的一些坑:找不到WinMain,不显示控制台,添加链接库等
目录: 用CMake构建SDL时报错 Gcc添加链接库 Gcc找不到入口(WinMain) 让SDL启动时不带控制台窗口 用CMake构建SDL时报错 root@ubuntu:~/SDL# cmake ...
- 《自拍教程45》Python_adb实时监控Logcat日志
接上一篇:adb命令_一键截取logcat日志, 有一天, 系统稳定性开发负责人找到我,希望我能在跑android 系统monkey的时候, 实时监控logcat的输出,如果一旦发现"jav ...
- (转)C代码优化方案
C代码优化方案 原文地址:http://www.uml.org.cn/c++/200811103.asp 目录 C代码优化方案 1.选择合适的算法和数据结构 2.使用尽量小的数据类型 3.减少运算的强 ...
- .NET 开发工具盘点和现状
在这里我盘点一下.NET的开发工具:Visual Studio.Jetbrains Rider.Mono Develop.SharpDevelop.QuickSharp.Visual Studio C ...
- str的常用方法
注:s表示定义的一个字符串变量,如:s = 'hello string' 1. s.index() 查找元素,若查到则返回该元素索引,含多个该元素则返回第一个,查不到则报错 s = 'hello ...
- C# 获取系统所有字体
获取已安装的所有字体列表 System.Drawing.FontFamily StringBuilder str = ); InstalledFontCollection fonts = new In ...