C#记录日志到本地文件工具类
using System;
using System.Diagnostics;
using System.IO;
using System.Threading;
using System.Web; namespace Com.AppCode.Helper
{
/// <summary>
/// 日志记录到本地文件
/// </summary>
public class Log
{
/// <summary>
/// 调试日志
/// </summary>
/// <param name="msg"></param>
static public void Debug(object msg)
{
WriteLog("Debug", string.Empty, msg);
}
/// <summary>
/// 错误或异常日志
/// </summary>
/// <param name="msg"></param>
static public void Error(object msg)
{
WriteLog("Error", string.Empty, msg);
}
/// <summary>
/// 内容日志
/// </summary>
/// <param name="msg"></param>
static public void Info(object msg)
{
WriteLog("Info", string.Empty, msg);
}
/// <summary>
/// 警告日志
/// </summary>
/// <param name="msg"></param>
static public void Warn(object msg)
{
WriteLog("Warn", string.Empty, msg);
} /// <summary>
/// 微信日志
/// </summary>
static public void Mp(object msg)
{
WriteLog("Mp", string.Empty, msg);
} static private Mutex m_Mutex = new Mutex();
/// <summary>
/// 日志文件记录
/// </summary>
/// <param name="errorType">日志类型</param>
/// <param name="pre">文件前缀可不填写</param>
/// <param name="msg">日志内容</param>
static public void WriteLog(object errorType, object pre, object msg)
{
try
{
m_Mutex.WaitOne();
}
catch (Exception)
{
return;
}
try
{
string dir = "/log/" + errorType + "/";
string dirPath = HttpContext.Current.Server.MapPath(dir);
if (!Directory.Exists(dirPath))
{
Directory.CreateDirectory(dirPath);
}
string fileName = pre + DateTime.Today.ToString("yyyyMMdd") + ".log";
string logPath = Path.Combine(dirPath, fileName);
if (!File.Exists(logPath))
{
File.Create(logPath).Close();
}
TextWriter oWrite = File.AppendText(logPath);
string sTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ffff");
oWrite.WriteLine(sTime + ": " + msg);
oWrite.Close();
}
catch (Exception e)
{
EventLog myLog = new EventLog();
myLog.Source = "Com.Log";
myLog.WriteEntry("Write Log Error:" + msg + "\t" + e.Message);
}
finally
{
m_Mutex.ReleaseMutex();
}
}
}
}
C#记录日志到本地文件工具类的更多相关文章
- 自动扫描FTP文件工具类 ScanFtp.java
package com.util; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import ja ...
- Android FileUtil(android文件工具类)
android开发和Java开发差不了多少,也会有许多相同的功能.像本文提到的文件存储,在Java项目和android项目里面用到都是相同的.只是android开发的一些路径做了相应的处理. 下面就是 ...
- 拍照、本地图片工具类(兼容至Android7.0)
拍照.本地图片工具类:解决了4.4以上剪裁会提示"找不到文件"和6.0动态授予权限,及7.0报FileUriExposedException异常问题. package com.hb ...
- Java常用工具类---IP工具类、File文件工具类
package com.jarvis.base.util; import java.io.IOException;import java.io.InputStreamReader;import jav ...
- 读取Config文件工具类 PropertiesConfig.java
package com.util; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io ...
- Property工具类,Properties文件工具类,PropertiesUtils工具类
Property工具类,Properties文件工具类,PropertiesUtils工具类 >>>>>>>>>>>>>& ...
- Java 实现删除文件工具类
工具代码 package com.wangbo; import java.io.File; /** * 删除目录或文件工具类 * @author wangbo * @date 2017-04-11 1 ...
- HTTP 下载文件工具类
ResponseUtils.java package javax.utils; import java.io.ByteArrayInputStream; import java.io.File; im ...
- java文件工具类
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...
随机推荐
- RK3288 添加普通串口uart1和uart3
CPU:RK3288 系统:Android 5.1 diff --git a/device/rockchip/common/init.connectivity.rc b/device/rockchip ...
- 数据库Sequence创建与使用
最近几天使用Oracle的sequence序列号,发现对如何创建.修改.使用存在很多迷茫点,在上网寻找答案后,根据各路大神的总结,汇总下对自己的学习成果: 在Oracle中sequence就是序号,每 ...
- C# 使用Task执行异步操作
为什么要使用 Task Task 和 Thread 区别 Task 介绍 Task 简单实现 Task 执行状态 为什么要使用 Task 线程是创建并发的底层工具,因此具有一定的局限性. 没有简单的方 ...
- [Java复习] 多线程 并发 JUC 补充
线程安全问题? 当多个线程共享同一个全局变量,做写的操作时,可能会受到其他线程的干扰.读不会发生线程安全问题. -- Java内存模型. 非静态同步方法使用什么锁? this锁 静态同步方法使用什么 ...
- linux下程序启动后后台运行实现
关于linux下的程序运行很简单,将源码编译成二进制(假设为proram)文件后直接在命令行运行即可,root#./program如果需要后台运行,即不占用当前终端,这在嵌入式linux显得十分有必要 ...
- PAT 甲级 1058 A+B in Hogwarts (20 分) (简单题)
1058 A+B in Hogwarts (20 分) If you are a fan of Harry Potter, you would know the world of magic ha ...
- DN创建
1. 参考采购订单创建DN : BAPI_OUTB_DELIVERY_CREATE_STO FUNCTION zmmfm0202. *"--------------------------- ...
- git命令手册
以下内容是我在学习和研究Git时,对Git操作的特性.重点和注意事项的提取.精练和总结,可以做为Git操作的字典,方便大家查阅: 备注:本文会不断更新完善: 目录 一. 语法格式描述 二. git环境 ...
- MyBatis 的案例
首先我们需要先下载jar包 其次我们书写具体的内容 Student Class package entity; /* * 学生类 * */ public class Student { //学生编号 ...
- Spring-boot内置的程序管理监控工具-Actuator
1.引入jar包: <dependencies> <dependency> <groupId>org.springframework.boot</groupI ...