public class Logs
{
/// <summary>
/// 写日志,指定日志文件
/// </summary>
/// <param name="File"></param>
/// <param name="Msg"></param>
public static void Info(string Msg)
{
try
{
string fileName = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Log\\Info\\info-" + DateTime.Now.ToString("yyyyMMdd") + ".lg");
string path = Path.GetDirectoryName(fileName);
if (!System.IO.Directory.Exists(path))
{
System.IO.Directory.CreateDirectory(path);
System.IO.File.CreateText(fileName).Dispose();
}
else if (!System.IO.File.Exists(fileName))
{
System.IO.File.CreateText(fileName).Dispose();
}
using (TextWriter writer2 = System.IO.File.AppendText(fileName))
{
StringBuilder sb = new StringBuilder();
sb.AppendLine("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<");
sb.AppendLine("消息记录时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
sb.AppendLine(Msg);
sb.AppendLine(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
sb.AppendLine("");
writer2.WriteLine(sb.ToString());
}
}
catch (Exception ex)
{ }
} public static void Error(string Title, Exception exception)
{
try
{
string fileName = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Log\\Error\\err-" + DateTime.Now.ToString("yyyyMMdd") + ".lg");
string path = Path.GetDirectoryName(fileName);
if (!System.IO.Directory.Exists(path))
{
System.IO.Directory.CreateDirectory(path);
System.IO.File.CreateText(fileName).Dispose();
}
else if (!System.IO.File.Exists(fileName))
{
System.IO.File.CreateText(fileName).Dispose();
}
using (TextWriter writer2 = System.IO.File.AppendText(fileName))
{
StringBuilder sb = new StringBuilder();
sb.AppendLine("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<");
sb.AppendLine("程序发生异常:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
sb.AppendLine("异常标题:" + Title);
GetExceptionMsg(exception, sb, "");
sb.AppendLine(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
sb.AppendLine("");
writer2.WriteLine(sb.ToString());
}
}
catch (Exception ex)
{ }
} static void GetExceptionMsg(Exception ex, StringBuilder sb, string Prefix = "")
{
sb.AppendLine(Prefix + "【异常类型】:" + ex.GetType().Name);
sb.AppendLine(Prefix + "【异常信息】:" + ex.Message);
sb.AppendLine(Prefix + "【堆栈调用】:" + ex.StackTrace);
sb.AppendLine(Prefix + "【异常方法】:" + ex.TargetSite); if (ex.InnerException != null)
GetExceptionMsg(ex.InnerException, sb, Prefix + "\t");
}
}

  

C#日志写入的更多相关文章

  1. .NET Core的日志[4]:将日志写入EventLog

    面向Windows的编程人员应该不会对Event Log感到陌生,以至于很多人提到日志,首先想到的就是EventLog.EventLog不仅仅记录了Windows系统自身针对各种事件的日志,我们的应用 ...

  2. .NET Core的日志[3]:将日志写入Debug窗口

    定义在NuGet包"Microsoft.Extensions.Logging.Debug"中的DebugLogger会直接调用Debug的WriteLine方法来写入分发给它的日志 ...

  3. logback日志写入数据库(mysql)配置

    如题  建议将日志级别设置为ERROR.这样可以避免存储过多的数据到数据中. 1  logback 配置文件(如下) <?xml version="1.0" encoding ...

  4. 将日志写入EventLog

    将日志写入EventLog 面向Windows的编程人员应该不会对Event Log感到陌生,以至于很多人提到日志,首先想到的就是EventLog.EventLog不仅仅记录了Windows系统自身针 ...

  5. 将日志写入Debug窗口

    定义在NuGet包“Microsoft.Extensions.Logging.Debug”中的DebugLogger会直接调用Debug的WriteLine方法来写入分发给它的日志消息.如果需要使用D ...

  6. 扔掉log4j、log4j2,自己动手实现一个多功能日志记录框架,包含文件,数据库日志写入,实测5W+/秒日志文件写入,2W+/秒数据库日志写入,虽然它现在还没有logback那么强大

    讲到log4j,现在国外基本是没有开发者用这个框架了,原因大致有几点,1.功能太少:2.效率低下:3.线程锁bug等等等各种莫名其妙的bug一直都没解决. 其实最重要的是log4j的作者自己也放弃了l ...

  7. Log4j配置详解及不同的包(package)下的日志写入到不同的日志文件下

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt262 以下都是log4j.properties要写入的内容: 一:参数介绍: ...

  8. flask将日志写入日志文件

    import logging logging.basicConfig(level=logging.DEBUG,#控制台打印的日志级别 filename='log_new.log', # 将日志写入lo ...

  9. Python + logging 输出到屏幕,将log日志写入文件

    日志 日志是跟踪软件运行时所发生的事件的一种方法.软件开发者在代码中调用日志函数,表明发生了特定的事件.事件由描述性消息描述,该描述性消息可以可选地包含可变数据(即,对于事件的每次出现都潜在地不同的数 ...

  10. logging日志管理-将日志写入文件

    # -*- coding: cp936 -*- # test.py #http://blog.chinaunix.net/uid-27571599-id-3492860.html #logging日志 ...

随机推荐

  1. 关于centos更新后virtualbox无法使用的问题

    http://blog.csdn.net/zgglj/article/details/50325675

  2. OpenCV cv::Mat类

    using namespace cv; 1.Mat的声明: Mat m=Mat(rows, cols, type); Mat m=Mat(Size(width,height), type); type ...

  3. wangEditor——轻量化web富文本框

    wangEditor——轻量级web富文本编辑器 参见:wangEditor.github.io  或者  https://github.com/wangfupeng1988/wangEditor 交 ...

  4. jsp页面的跳转取值

    <p >工单管理 >> <c:if test="${code eq 0}">全部工单>>详情页</c:if> <c ...

  5. linux设备驱动归纳总结(三):4.ioctl的实现【转】

    本文转载自:http://blog.chinaunix.net/uid-25014876-id-59419.html linux设备驱动归纳总结(三):4.ioctl的实现 一.ioctl的简介: 虽 ...

  6. ubuntu硬件配置查看命令

    主板:sudo dmidecode |grep -A16 "System Information$"

  7. ubuntu下配置java环境【转】

    转自:http://www.cnblogs.com/fnng/archive/2013/01/30/2883815.html 配置JDK环境 下载 登录oracle的网站去下载JDK7 http:// ...

  8. GCD 多线程 初探

    GCD编程的核心就是dispatch队列,dispatch block的执行最终都会放进某个队列中去进行,它类似NSOperationQueue但更复杂也更强大,并且可以嵌套使用.所以说,结合bloc ...

  9. 怎样新建Oracle数据库

    新建Oracle数据库三种方法:1.通过运行Oracle Database Configuration Assistant 创建配置或删除数据库(也可在命令行下输入dbca):2.用命令行的方式建立数 ...

  10. C++11 std::function用法

    转自 http://www.hankcs.com/program/cpp/c11-std-function-usage.html function可以将普通函数,lambda表达式和函数对象类统一起来 ...