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#记录日志到本地文件工具类的更多相关文章

  1. 自动扫描FTP文件工具类 ScanFtp.java

    package com.util; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import ja ...

  2. Android FileUtil(android文件工具类)

    android开发和Java开发差不了多少,也会有许多相同的功能.像本文提到的文件存储,在Java项目和android项目里面用到都是相同的.只是android开发的一些路径做了相应的处理. 下面就是 ...

  3. 拍照、本地图片工具类(兼容至Android7.0)

    拍照.本地图片工具类:解决了4.4以上剪裁会提示"找不到文件"和6.0动态授予权限,及7.0报FileUriExposedException异常问题. package com.hb ...

  4. Java常用工具类---IP工具类、File文件工具类

    package com.jarvis.base.util; import java.io.IOException;import java.io.InputStreamReader;import jav ...

  5. 读取Config文件工具类 PropertiesConfig.java

    package com.util; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io ...

  6. Property工具类,Properties文件工具类,PropertiesUtils工具类

    Property工具类,Properties文件工具类,PropertiesUtils工具类 >>>>>>>>>>>>>& ...

  7. Java 实现删除文件工具类

    工具代码 package com.wangbo; import java.io.File; /** * 删除目录或文件工具类 * @author wangbo * @date 2017-04-11 1 ...

  8. HTTP 下载文件工具类

    ResponseUtils.java package javax.utils; import java.io.ByteArrayInputStream; import java.io.File; im ...

  9. java文件工具类

    import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...

随机推荐

  1. CSAW Quals CTF 2017-scv

    目录 程序基本信息 程序漏洞 整体思路 exp脚本 内容参考 程序基本信息 64位动态链接程序,开启了栈溢出和数据段不可执行保护 程序漏洞 read函数很明显的栈溢出漏洞 整体思路 由于题目给了lib ...

  2. java定时案例

    好久没写笔记了,变懒了! java定时运行的三个案例: 一, 通过sleep方法来达到定时任务的效果 public class testTime { public static void main(S ...

  3. SpringBoot中的异常处理方式

    SpringBoot中有五种处理异常的方式: 一.自定义错误页面 SpringBoot默认的处理异常机制:SpringBoot默认的已经提供了一套处理异常的机制.一旦程序出现了异常SpringBoot ...

  4. 如何确认oracle客户端中的TNSNAMES中的service_name

    在我们安装oracle的客户端,或者PLSQL develop的时候,需要在oracle的安装目录下修改TNSNAME中配置你要连接的数据库的TNS参数.配置好了可以通过命令行使用tnsping命令测 ...

  5. hwclock设置时间的调用过程是怎样的?

    调用过程如下: hwclock -w -> xioctl(RTC_SET_TIME); -> rtc_dev_ioctl() -> rtc_set_time()

  6. ISO/IEC 9899:2011 条款6.3.1——算术操作数

    6.3.1 算术操作数 6.3.1.1 布尔.字符以及整数 1.每个整数类型具有一个整数转换等级,如下定义: ——两个带符号的整数类型都不应该具有相同等级,即使它们具有相同的表示. ——一个带符号整数 ...

  7. tcpdump抓包代码

    tcpdump - tcp[:]=:]=0x4854 or tcp 抓出来的包可以导入wireshark分析 以上代码曾经在ios越狱机器上使用,用于抓包,具体也记不起来了 导入wireshark效果

  8. 在Excel多个工作表间快速切换的绝招

    在Excel多个工作表间快速切换的绝招 几乎每个Excel用户"数据分析师"都应该知道,如果一个Excel工作簿中包括许多个工作表,我们"数据分析师"可以通过单 ...

  9. shuffle 打乱一维数组

    <?php $arr = range(,); print_r($arr); echo '<br />'; shuffle($arr); print_r($arr); ?> Ar ...

  10. windows大全

    1.win7系统如何显示隐藏的文件                参考连接:https://jingyan.baidu.com/article/da1091fbc6c7d2027849d628.htm ...