public class Loger
{
/// <summary>
/// 写入日志
/// </summary>
/// <param name="content">日志内容</param>
/// <param name="title">日志标题</param>
/// <param name="folderName">文件夹名称</param>
/// <param name="filePrefixName">文件前缀名</param>
public static void Write(string content, string title = "", string folderName = "Log", string filePrefixName = "Log")
{
try
{
lock (typeof(Loger))
{
DateTime dateTimeNow = DateTime.Now;
string logDirPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "log", folderName);
if (!Directory.Exists(logDirPath))
{
Directory.CreateDirectory(logDirPath);
} string logFilePath = string.Format("{0}/{1}-{2}.txt", logDirPath, filePrefixName, dateTimeNow.ToString("yyyy-MM-dd"));
using (StreamWriter writer = new StreamWriter(logFilePath, true, Encoding.UTF8))
{
try
{
writer.WriteLine("------------------------------------------------------------------------------------------");
writer.WriteLine(title);
writer.WriteLine("日志时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
writer.WriteLine(content);
writer.WriteLine("------------------------------------------------------------------------------------------");
}
catch (Exception ex)
{
Console.WriteLine("Loger.cs Line45" + ex.Message);
} writer.Close();
}
}
}
catch(Exception ex)
{
Console.WriteLine("Loger.cs Line54" + ex);
//throw new Exception("无法将日志写入文件,请查看安装目录是否有权限!");
}
} /// <summary>
/// 写入日志
/// </summary>
/// <param name="format">符合格式字符串</param>
/// <param name="args">一个对象数组,其中包含零个或多个要设置格式的对象</param>
public static void WriteFormat(string format, params object[] args)
{
string content = string.Format(format, args);
Write(content, "", "Log", "Log");
} /// <summary>
/// 写入日志
/// </summary>
/// <param name="ex">Exception对象</param>
/// <param name="title">日志标题</param>
/// <param name="folderName">文件夹名称</param>
/// <param name="filePrefixName">文件前缀名</param>
public static void Write(Exception ex, string title = "", string folderName = "Exception", string filePrefixName = "Exception")
{
string content = string.Format("错误信息:{1}{0}错误来源:{2}{0}堆栈信息:{0}{3}", Environment.NewLine, ex.Message, ex.Source, ex.StackTrace);
Write(content, title, folderName, filePrefixName);
}
}

封装一个C#日志类Loger的更多相关文章

  1. Python_selenium封装一个浏览器引擎类

    Python_selenium封装一个浏览器引擎类 现在我们在编写一个类,叫浏览器引擎类(此例为:启动浏览器),将文件名命名为browser.py,代码下面通过更改一个字符串的值,运用if语句判断和控 ...

  2. 在Lua中封装一个调试日志(附lua时间格式)

    --自己封装一个Debug调试日志 Debug={} Info={} local function writeMsgToFile(filepath,msg) end function Debug.Lo ...

  3. Python+Selenium中级篇之-封装一个自己的类-浏览器引擎类

    前一篇文章我们知道了,如何去封装几个简单的Selenium方法到我们自定义的类,这次我们编写一个类,叫浏览器引擎类,通过更改一个字符串的值,利用if语句去判断和控制启动那个浏览器.这里我们暂时,支持三 ...

  4. 封装一个redis操作类来操作hash格式

    最近项目要用redis,依然是基于tp3.2. 发现thinkphp3.2自带的缓存类并不好使用,就自己封装了一个 目前只支持hash格式,其他数据类型的操作后面用到的时候再补充 <?php / ...

  5. block传值以及利用block封装一个网络请求类

    1.block在俩个UIViewController间传值 近期刚学了几招block 的高级使用方法,事实上就是利用block语法在俩个UIViewController之间传值,在这里分享给刚開始学习 ...

  6. 一个php日志类

    <?php //author:lixiuran class Log { public static function writeLog($string) { $string = date('H: ...

  7. python+selenium之自定义封装一个简单的Log类

    python+selenium之自定义封装一个简单的Log类 一. 问题分析: 我们需要封装一个简单的日志类,主要有以下内容: 1. 生成的日志文件格式是 年月日时分秒.log 2. 生成的xxx.l ...

  8. Python之自定义封装一个简单的Log类

    参考:http://www.jb51.net/article/42626.htm 参考:http://blog.csdn.net/u011541946/article/details/70198676 ...

  9. PHP打印日志类

    PHP简单封装个打印日志类,方便查看日志: <?php /** * Created by PhpStorm. * User: zenkilan * Date: 2019/9/26 * Time: ...

随机推荐

  1. Delphi 时间函数:关于时间精确的几个函数和方法

    //取毫秒级时间精度(方法一): var t1,t2:int64; r1:int64; begin t1:=GetTickCount;//获取开始计数 WINDOWS API sleep(1000); ...

  2. Java——包装类(Wrapper)

    2.7包装类(Wrapper) 基本数据类型由于不是类,不能够使用java类库里提供的大量的方法.所有在设计上,我们让每一个基本数据类型都对应一个类,同时数据存储的范围还不变.此时相当于基本数据类型就 ...

  3. NX二次开发-UFUN修改当前导出CGM文件选项设置UF_CGM_set_session_export_options

    文章转载自唐康林NX二次开发论坛,原文出处: http://www.nxopen.cn/thread-126-1-1.html 刚才有同学问到这个问题,如果是用NXOpen来做,直接录制一下就可以了: ...

  4. python round, ceil, flooor

    round(num, n) 保留n位小数 round(80.23456, 2) : 80.23 round(100.000056, 3) : 100.0 round(-100.000056, 3) : ...

  5. go beego

    一. 引入 go get github.com/astaxie/beego go get gitgub.com/beego/bee go get -u gitxxx.... 更新框架 编写 packa ...

  6. Dijkstra with priority queue 分类: ACM TYPE 2015-07-23 20:12 4人阅读 评论(0) 收藏

    POJ 1511 Invitation Cards(单源最短路,优先队列优化的Dijkstra) //================================================= ...

  7. 图像直方图均衡化(C#)

    关于图像直方图均衡化的原理和步骤先不作讨论,我就看看代码吧. private Bitmap picequalization(Bitmap basemap, int width, int height) ...

  8. 解决centos7没有显示ipv4的问题

    很多小伙伴再安装centos7的时候,都是一直默认安装.所以导致后来没有ipv4 那么到底什么原因呢,我最近找到了原因: 就是在这里没有选择: 将这个地方打开之后,就会有了,那么问题就是那个原因.如果 ...

  9. 21-2-substring

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. navicat远程连接报1045 access denied for user'root'@'ip'(using pasword:yes".............

    这个其实很简单,授权就行了.如下 1.GRANT ALL PRIVILEGES ON *.* TO'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;2 ...