C#向文本文件中写入日志
今天看了一篇文章,说的是使用微软自带的日志类写日志,然后晚上我就花了2个多小时自己动手试了一下,然后模仿者自己封装了一个类库。
下面是自己封转的类:
/*****
* 创建人:金河
* 创建日期:2014-4-2 22:43
* 内容:日志类
*/ using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
using System.IO; namespace Log
{
/// <summary>
/// 继承TraceListener
/// (1)必须要重写的方法void Write(string message);void WriteLine(string message);
/// (2)子类方法重写必须和父类方法返回值、参数列表完全相同
/// </summary>
public class Log : TraceListener
{ private string m_fileName; // 文件名
private string m_filePath; // 文件路径 public string FileFullPath
{
get
{
if (Directory.Exists(m_filePath) == false)
{
Directory.CreateDirectory(m_filePath);
}
return m_filePath.TrimEnd('/') + "/" + m_fileName;
} } public Log()
{
m_fileName = DateTime.Now.ToString("yyyy-MM-dd") + ".txt"; // 默认文件名为 今天的日期
m_filePath = AppDomain.CurrentDomain.BaseDirectory + "/log"; // 默认路径在当前域log文件夹下面
}
public Log(string sFileName)
{
m_fileName = sFileName;
m_filePath = AppDomain.CurrentDomain.BaseDirectory + "/log"; //默认路径在当前域log文件夹下面
} public override void Write(string message)
{
WriteLine(message);
} public override void WriteLine(string message)
{
WriteLine(null, message);
} /// <summary>
/// 将异常或信息写入日志
/// </summary>
/// <param name="exception"></param>
/// <param name="message"></param>
public override void WriteLine(object exception, string message)
{
string sMsg = Environment.NewLine + DateTime.Now.ToString() + Environment.NewLine;
if (!string.IsNullOrEmpty(message)) //如果信息不为空,加在最前面
{
sMsg += message;
}
if (exception is Exception)
{
Exception ex = (Exception)exception;
sMsg += ex.Message + Environment.NewLine; // 错误提示
sMsg += ex.StackTrace; // 堆栈信息
}
else if (exception != null)
{
sMsg += exception.ToString();
} File.AppendAllText(FileFullPath, sMsg);
} }
}
下面是文档地址:
利用C#自带组件强壮程序日志
C#向文本文件中写入日志的更多相关文章
- java往文本文件中写入信息并修改
题目要求: 1.可以往一个文本文档中写入员工信息:name,id和详情 2.可以更改name package FanCQ.Xue.practice; import java.io.*;import j ...
- Mysql中错误日志、binlog日志、查询日志、慢查询日志简单介绍
前言 数据库的日志是帮助数据库管理员,追踪分析数据库以前发生的各种事件的有力根据.mysql中提供了错误日志.binlog日志(二进制日志).查处日志.慢查询日志.在此,我力求解决下面问题:各个日志的 ...
- Java基础知识强化之IO流笔记51:IO流练习之 键盘录入学生信息按照总分排序写入文本文件中的案例
1. 键盘录入学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分排序写入文本文件中 分析: A:创建学生类 B:创建集合对象 TreeSet<Student> ...
- 解决nohup中不写入日志的问题
(一)问题描述: nohup 你的程序命令 如: nohup python manage.py runserver 0.0.0.0:6789 (此shell窗口1不要关,另外开一个shell窗口2 ...
- flink---实时项目--day01--1. openrestry的安装 2. 使用nginx+lua将日志数据写入指定文件中 3. 使用flume将本地磁盘中的日志数据采集到的kafka中去
1. openrestry的安装 OpenResty = Nginx + Lua,是⼀一个增强的Nginx,可以编写lua脚本实现⾮非常灵活的逻辑 (1)安装开发库依赖 yum install -y ...
- .NetCore中的日志(1)日志组件解析
.NetCore中的日志(1)日志组件解析 0x00 问题的产生 日志记录功能在开发中很常用,可以记录程序运行的细节,也可以记录用户的行为.在之前开发时我一般都是用自己写的小工具来记录日志,输出目标包 ...
- 【.net 深呼吸】写入日志文件
记录日志,一方面可以把日志写入系统的日志存储中,可在“事件查看器”窗口中查看:如果不喜欢写到系统的日志文件中,也可以写到自己定义的文件中. 其实,日志文件就是文本文件,可能有朋友会想到用写入文本文件的 ...
- ASP.NET 日志组件Smart.LogNet.DLL 引用即可写入日志及读取日志
借助LogNet组件,以后查看站点日志,再也不用去服务器下载了 日志组件:LogNet.DLL ,引用即可使用 写入方法: 1.LogNet.Log.WriteLog("日志标题" ...
- .NetCore中的日志(2)集成第三方日志工具
.NetCore中的日志(2)集成第三方日志工具 0x00 在.NetCore的Logging组件中集成NLog 上一篇讨论了.NetCore中日志框架的结构,这一篇讨论一下.NetCore的Logg ...
随机推荐
- linux下的c编程
linux下的c编程 Linux 系统上可用的 C 编译器是 GNU C 编译器, 它建立在自由软件基金会的编程许可证的基础上,因此可以自由发布.GNU C 对标准 C 进行一系列扩展,以增强标准 ...
- ASP.NET 4.0 取消表单危险字符验证
/// <summary> /// ASP.NET4.0 表单验证类 /// </summary> public class FormRequestValidation : R ...
- 在Window的IIS中创建FTP的Site并用C#进行文件的上传下载
文件传输协议 (FTP) 是一个标准协议,可用来通过 Internet 将文件从一台计算机移到另一台计算机. 这些文件存储在运行 FTP 服务器软件的服务器计算机上. 然后,远程计算机可以使用 FTP ...
- objective-c 遍历文件夹查看文件
#import <Foundation/Foundation.h>int main (int argc, const char * argv[]){ @autoreleasepool ...
- cocos2dx游戏开发——别踩白块学习笔记(二)——经典模式的实现
一.创建GameScene以及GameLayer 就是简单创建一个Scene而已,在此就不多说啦~,可以参照我的打飞机的学习笔记(2). 二.添加一个开始栏 很简单,就是调用Block中的create ...
- json 转化
1. 把java 对象列表转换为json对象数组,并转为字符串 复制代码代码如下: JSONArray array = JSONArray.fromObject(userlist); S ...
- clear both
原文地址:http://www.codefans.net/articles/653.shtml 因CSS很多布局是需要浮动的,当属性设置float(浮动)时,其所在的物理位置已经脱离文档流了,为了使f ...
- 浏览器-02 Chromium的多线程
Chromium 的多线程机制 概述 每个进程都有很多的线程; 多线程主要是为了保证UI线程(chrome 线程,主线程)不会被任何其它费时的操作阻碍而影响对用户的响应; 为了解决多线程通信和同步问题 ...
- js中各种宽高
各种宽高 Javascript: IE中:document.body.clientWidth ==> BODY对象宽度document.body.clientHeight ==> BODY ...
- Android获取APK包名的几种方法
Android获取APK包名的几种方法:1.adb shell pm list package -f | findstr 关键字 #只能获取到包名,主Activity名无法获取到 2.使用aapt-- ...