封装一个C#日志类Loger
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的更多相关文章
- Python_selenium封装一个浏览器引擎类
Python_selenium封装一个浏览器引擎类 现在我们在编写一个类,叫浏览器引擎类(此例为:启动浏览器),将文件名命名为browser.py,代码下面通过更改一个字符串的值,运用if语句判断和控 ...
- 在Lua中封装一个调试日志(附lua时间格式)
--自己封装一个Debug调试日志 Debug={} Info={} local function writeMsgToFile(filepath,msg) end function Debug.Lo ...
- Python+Selenium中级篇之-封装一个自己的类-浏览器引擎类
前一篇文章我们知道了,如何去封装几个简单的Selenium方法到我们自定义的类,这次我们编写一个类,叫浏览器引擎类,通过更改一个字符串的值,利用if语句去判断和控制启动那个浏览器.这里我们暂时,支持三 ...
- 封装一个redis操作类来操作hash格式
最近项目要用redis,依然是基于tp3.2. 发现thinkphp3.2自带的缓存类并不好使用,就自己封装了一个 目前只支持hash格式,其他数据类型的操作后面用到的时候再补充 <?php / ...
- block传值以及利用block封装一个网络请求类
1.block在俩个UIViewController间传值 近期刚学了几招block 的高级使用方法,事实上就是利用block语法在俩个UIViewController之间传值,在这里分享给刚開始学习 ...
- 一个php日志类
<?php //author:lixiuran class Log { public static function writeLog($string) { $string = date('H: ...
- python+selenium之自定义封装一个简单的Log类
python+selenium之自定义封装一个简单的Log类 一. 问题分析: 我们需要封装一个简单的日志类,主要有以下内容: 1. 生成的日志文件格式是 年月日时分秒.log 2. 生成的xxx.l ...
- Python之自定义封装一个简单的Log类
参考:http://www.jb51.net/article/42626.htm 参考:http://blog.csdn.net/u011541946/article/details/70198676 ...
- PHP打印日志类
PHP简单封装个打印日志类,方便查看日志: <?php /** * Created by PhpStorm. * User: zenkilan * Date: 2019/9/26 * Time: ...
随机推荐
- delphi xe10 网络连接
//当前网络状态(引用 Androidapi.JNI.Network.pas) IsConnected //连接 IsWiFiConnected //Wifi是否连接 IsMobileConnecte ...
- cucumber:extentreports集成报告
extentreports 测试报告 只支持java..Net 先在pom.xml文件中加入包引用 <!-- report--> <dependency> <groupI ...
- Java中的线程Thread方法之---stop()
搞过Java线程的人都知道,stop这个方法是臭名昭著了,早就被弃用了,但是现在任然有很多钟情与他的人,永远都放不下他,因为从他的字面意思上我们可以知道他貌似可以停止一个线程,这个需求是每个搞线程开发 ...
- NX二次开发-UFUN读取表格注释内容UF_TABNOT_ask_cell_text
NX11+VS2013 #include <uf.h> #include <uf_ui.h> #include <uf_tabnot.h> #include < ...
- Gym101981D - 2018ACM-ICPC南京现场赛D题 Country Meow
2018ACM-ICPC南京现场赛D题-Country Meow Problem D. Country Meow Input file: standard input Output file: sta ...
- LaTeX+TexStudio安装与使用
(很多杂志期刊接受LaTeX电子版时会提供自己的模板,只要使用他们的模板即可完美地展现在对应的刊物中) 0x00. 优点 丰富易用的数学公式和特殊符号: 容易生成图表编号.引用.交叉引用.目录: 可以 ...
- 剑指offer——16二进制中1的个数
题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 有可能引起死循环解法: 每次判断最右端是不是1[与 & 1即可],是就cnt++,然后右移一位,直到num为0,结束 ...
- 关于DEBUG的一点体会
目录 1. 看待问题 2. 为什么要debug 3. 我理解的问题定位能力 4. debug能力模型的4个层级 5. 小结与扩展 1. 看待问题 遇到更高级的bug,解决更重要的问题,是开发同学的迭代 ...
- JS事件 什么是事件?JavaScript 创建动态页面。事件是可以被 JavaScript 侦测到的行为。 网页中的每个元素都可以产生某些可以触发 JavaScript 函数或程序的事件。
什么是事件 JavaScript 创建动态页面.事件是可以被 JavaScript 侦测到的行为. 网页中的每个元素都可以产生某些可以触发 JavaScript 函数或程序的事件. 比如说,当用户单击 ...
- 第一个Vus.js
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...