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. 在linux下的firefox中安装flashplayer

    将 libflashplayer.so 复制进 ~/.mozilla/plugins/ 若目标目录不存在,请自行创建

  2. sql语句删除数据表重复字段的方法

    大家都可能遇到字段重复的情况,网上很多人在找方法,也给出了一些方法,但是有的方法是误导大家,铁牛写出以下方法,方便大家使用 1.通过group by把重复的字段筛选出来,并建立临时表tmp 1 cre ...

  3. Cannot spawn... TortoisePlink

    error: cannot spawn "C:\Program Files\TortoiseGit\bin\TortoisePlink.exe": No such file or ...

  4. 膜拜acm大牛 虽然我不会这题,但是AC还是没有问题的~(转自hzwer)

    wywcgs: 亦称Lord Wu,俗名吴垠,2009级厦门大学智能科学与技术学院研究生,本科就读于哈尔滨工业大学.因其深厚的算法功底与独到的思维方式,被尊为“吴教主”,至今声威犹存. 2006年起参 ...

  5. Ceph的客户端丢失文件夹的解决办法

    原来的解决办法 更新linux内核,使用linux内核级的mount方式,一段时间后将会在客户端看不到部分长期不使用的文件夹 更正后的解决办法 参考Ceph的客户端安装设置ceph-fuse方式挂载c ...

  6. ios7下不能录音问题解决

    在ios6上运行非常正常的AVAudioRecoder组件,而跑到ios7上就不能工作了.通过google搜索在stackoverflow上的解决方法.http://stackoverflow.com ...

  7. JNI开发流程-JNI/NDK【转】

    本文转载自:http://wiki.jikexueyuan.com/project/jni-ndk-developer-guide/workflow.html 开发流程 JNI 全称是 Java Na ...

  8. stdout.read()与stdout.readlines()方法同时使用后果

    stdout.read()与stdout.readlines()方法同时使用将无法导致最后使用的stdout.readlines()读取的内容为空,原因是首先调用的stdout.read()已将数据读 ...

  9. 【PHP设计模式 02_JieKou.php】面向接口开发

    <?php /** * [面向接口开发] * */ header("Content-type: text/html; charset=utf-8"); /*共同接口--连接数 ...

  10. linux下echo命令详解(转)

      linux的echo命令, 在shell编程中极为常用, 在终端下打印变量value的时候也是常常用到的, 因此有必要了解下echo的用法 echo命令的功能是在显示器上显示一段文字,一般起到一个 ...