日志的记录是将程序过程中的一些行为数据记录下来,方便开发、运维迅速的找到问题的所在,节省时间。使用时在

站点的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#通用类库整理--日志记录的更多相关文章

  1. 【C#通用类】日志记录类

    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...

  2. C#通用类库整理--字符串处理类

    在程序开发中通常需要将字符串转为自己想要的结果,以下三个类库主要实现: 1.GetStrArray(string str, char speater, bool toLower)  把字符串按照分隔符 ...

  3. C#通用类库整理--序列化类

    程序员在编写应用程序的时候往往要将程序的某些数据存储在内存中,然后将其写入某个文件或是将它传输到网络中的另一台计算机上 以实现通讯.这个将程序数据转化成能被存储并传输的格式的过程被称为"序列 ...

  4. C# 面向切面编程--监控日志记录方案

    背景:现在公司整体在做监控平台,要求把各个部分的细节都记录下来,在前台页面上有所显示,所以现在需要做的就是一个监控日志的记录工作,今天讲的就是渲染监控日志的例子. 现状:当前的渲染程序没有为监控日志记 ...

  5. 日志记录类库log4net的使用总结

    log4net是一个开源的日志记录类库,经过配置后可以自动抓取程序中的错误.异常信息,并写入磁盘,也可以在异常发生时执行其他指定的操作,比如:通知某人右键.写入数据库等.这里写个ASP.NET MVC ...

  6. 类库里面添加日志记录 log4net

    第一步: 新建一个公共类库common,添加CustomLog4jLogger.cs 并引用log4net.dll /// <summary> /// 日志记录 /// </summ ...

  7. JAVA实现通用日志记录

    原文:http://blog.csdn.net/jinzhencs/article/details/51882751 前言: 之前想在filter层直接过滤httpServerletRequest请求 ...

  8. 【个人使用.Net类库】(2)Log日志记录类

    开发接口程序时,要保证程序稳定运行就要时刻监控接口程序发送和接收的数据,这就需要一个日志记录的类将需要的信息记录在日志文件中,便于自己维护接口程序.(Web系统也是如此,只是对应的日志实现比这个要复杂 ...

  9. 【干货】.NET开发通用组件发布(四) 日志记录组件

    组件介绍和合作开发 http://www.cnblogs.com/MrHuo/p/MrHuoControls.html 日志记录组件功能介绍 通过基类Logger,实现了文本记录日志和数据库记录日志两 ...

随机推荐

  1. centos7下pymysql安装

    1. 安装 添加mysql yum respository 添加 MySQL Yum Repository 到你的系统 repository 列表中,执行 wget http://repo.mysql ...

  2. Markdown中插入复杂的合并表格方法

    由于Markdown自身的语法限制,不能直接插入有合并单元格的复杂表格. 姓名 学号 专业 张三 2018123456 计算机 赵四 2018222356 自动化 李六 2018666666 信息工程 ...

  3. django 从零开始 2迁移模型数据到数据库中和admin初识

    和flask 一样 如果模型models 发生改动,则需要进行一个迁移数据库,但是我还没有想讲到那么深入,现在模型是django自带的一些sessiong,damin之类的模型 所以如果你想进去adm ...

  4. django 从零开始 制作一个图站 1环境的配置以及测试本地服务器

    先使用用virtualenv建立一个虚拟环境 使用pycharm 建立一个django项目 选择虚拟环境和建立一个应用app 其中 tuzhan是项目根目录 user是我们的项目app 中间一些项目文 ...

  5. ASP.NET Core ActionFilter引发的一个EF异常

    最近在使用ASP.NET Core的时候出现了一个奇怪的问题.在一个Controller上使用了一个ActionFilter之后经常出现EF报错. InvalidOperationException: ...

  6. 使用twisted将mysql插入变成异步执行

    python 异步MySQL存库   对于异步框架而言,这些延迟是无法接受的.因此, Twisted 提供了 twisted.enterprise.adbapi, 遵循DB-API 2.0协议的一个异 ...

  7. JAVA设计模式之-模板方法+(钩子函数)

    1.定义 允许子类对父类的一个或多个步骤进行重写.例如聚合支付场景中有很多共同的步骤,比如验签.四要素验证.风控等等,但是在支付的时候走不同的渠道可能在调用和参数上有很大的不同,比如有的是xml,有的 ...

  8. Scala尾递归

    递归函数应用 首先,我们来对比两个递归方法的求值步骤. 假设有方法gcd,用来计算两个数的最大公约数.下面是欧几里得算法的实现: def gcp(a: Int, b: Int): Int = if ( ...

  9. asp.net net::ERR_ABORTED 500 (Internal Server Error) 无法加载JS CSS等文件的解决方法

    网站换服务器,部署上去后打开首页,js .css等文件始终无法加载,经过排查,问题出现在web.config文件中. <defaultDocument> <files> < ...

  10. [JVM教程与调优] JVM都有哪些参数类型?

    JDK本身是提供了一些监控工具,有一些是命令行,也有图形界面.本次介绍命令行如何进行监控. 命令行是非常重要的,因为在我们生产环境基本上是没有图形界面的,完全是通过命令行. 主要内容: JVM的参数类 ...