第一步创建ApplicationLog类

代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Web;

namespace WeChat.Common
{
/// <summary>
/// 通过活动及页面级别
/// </summary>
public class ApplicationLog
{
/// <summary>
/// 写入错误日志
/// </summary>
/// <param name="message">日志内容</param>
public static void Write(string message)
{
Write(message, LogType.txt);
}

/// <summary>
/// 写入错误日志
/// </summary>
/// <param name="message">日志内容</param>
/// <param name="method">方法名称</param>
public static void Write(string message, string method)
{
Write(message + ",Method:" + method, LogType.txt);
}

/// <summary>
/// 写入错误日志
/// </summary>
/// <param name="description">错误异常的简单描述</param>
/// <param name="exceptionInfo">exception抛出的异常信息</param>
/// <param name="pageName">报错页面的名称</param>
/// <param name="methodName">报错方法的名称</param>
public static void Write(string description, string exceptionInfo, string pageName, string methodName)
{
Write(string.Format("{0}:{1},Page={2},Method={3}", description, exceptionInfo, pageName, methodName));
}

/// <summary>
/// 写入信息记录日志
/// </summary>
/// <param name="message">日志内容</param>
public static void WriteLog(string message)
{
Write(message, LogType.log);
}

/// <summary>
/// 写入信息记录日志
/// </summary>
/// <param name="message">日志内容</param>
/// <param name="method">方法名称</param>
public static void WriteLog(string message, string method)
{
Write(message + ",Method:" + method, LogType.log);
}

// 写入日志
private static void Write(string message, LogType fileType)
{
string folder = "";
try
{
folder = HttpContext.Current.Server.MapPath("~/Logs/");
}
catch (Exception ex)
{
folder = Path.Combine(HttpRuntime.AppDomainAppPath,"Logs\\");
}
string file = string.Format("{0}{1}.{2}", folder, DateTime.Now.ToString("yyyyMMdd"), fileType);
if (HttpContext.Current != null)
{
message = string.Format("[{0}][{1}][{2}]:{3}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), HttpContext.Current.Request.Url.LocalPath, HttpContext.Current.Request.UserHostAddress, message);
}
else
{
message = string.Format("[{0}]:{1}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), message);
}
try
{
if (!Directory.Exists(folder))
{
Directory.CreateDirectory(folder);
}

StreamWriter sw;

if (!File.Exists(file))
{
sw = File.CreateText(file);
sw.Close();
}

sw = new StreamWriter(file, true, Encoding.Default);
lock (sw)
{
sw.WriteLine(message);
sw.Close();
}
}
catch (Exception ex)
{
if (HttpContext.Current != null)
{
HttpContext.Current.Response.Write(string.Format("log write error, ex={0}。", ex.Message));
HttpContext.Current.Response.End();
}
}
}

//日志类型
private enum LogType
{
txt = 0,
log = 1
}

}

}

第三步:

调用方法:

第四步:

最终创建log文件的log.txt文本内容

写入Log错误日志的更多相关文章

  1. Log错误日志级别

    日志记录器(Logger)的级别顺序:     分为OFF.FATAL.ERROR.WARN.INFO.DEBUG.ALL或者您定义的级别.Log4j建议只使用四个级别,优先级 从高到低分别是 ERR ...

  2. SQL Server代理(5/12):理解SQL代理错误日志

    SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. 如我们在这个系列的前几篇文章所见,SQL ...

  3. 第五篇 SQL Server代理理解代理错误日志

    本篇文章是SQL Server代理系列的第五篇,详细内容请参考原文. 正如这一系列的前几篇所述,SQL Server代理作业是由一系列的作业步骤组成,每个步骤由一个独立的类型去执行.在第四篇中我们看到 ...

  4. mysql之 日志体系(错误日志、查询日志、二进制日志、事务日志、中继日志)

    一. mysql错误日志:错误日志记录的事件:a).服务器启动关闭过程中的信息b).服务器运行过程中的错误信息c).事件调试器运行一个事件时间生的信息d).在从服务器上启动从服务器进程时产生的信息lo ...

  5. MySQL-五种日志(查询日志、慢查询日志、更新日志、二进制日志、错误日志)、备份及主从复制配置

    开启查询日志: 配置文件my.cnf: log=/usr/local/mysql/var/log.log 开启慢查询: 配置文件my.cnf: log-slow-queries=/usr/local/ ...

  6. 【译】第五篇 SQL Server代理理解代理错误日志

    本篇文章是SQL Server代理系列的第五篇,详细内容请参考原文. 正如这一系列的前几篇所述,SQL Server代理作业是由一系列的作业步骤组成,每个步骤由一个独立的类型去执行.在第四篇中我们看到 ...

  7. .Net Core中间件和过滤器实现错误日志记录

    1.中间件的概念 ASP.NET Core的处理流程是一个管道,中间件是组装到应用程序管道中用来处理请求和响应的组件. 每个中间件可以: 选择是否将请求传递给管道中的下一个组件. 可以在调用管道中的下 ...

  8. [PHP] PHP在CLI环境下的错误日志

    1.display_errors = Off;//控制php是否输出错误;在生产环境中输出会泄露敏感信息;建议记录错误而不是将它们发送到STDOUToff :不显示任何错误;stderr :向STDE ...

  9. MySQL 错误日志(Error Log)

    同大多数关系型数据库一样,日志文件是MySQL数据库的重要组成部分.MySQL有几种不同的日志文件.通常包括错误日志文件,二进制日志,通用日志,慢查询日志,等等. 这些日志能够帮助我们定位mysqld ...

随机推荐

  1. 使用jquery日期选择器flatpickr.js,使用js动态创建input元素时插件失效

    最近写页面时需要用到,日期选择器,网上搜索了一些插件,最后使用了flatpickr.js.我是从npm 上拉下的依赖  npm install flatpickr --save 随后在页面中引入css ...

  2. Mysql的两种偏移量分页写法

    当一个查询语句偏移量offset很大的时候,如select * from table limit 10000,10 , 先获取到offset的id后,再直接使用limit size来获取数据,效率会有 ...

  3. Java高级开发工程师面试笔记

    最近在复习面试相关的知识点,然后做笔记,后期(大概在2018.02.01)会分享给大家,尽自己最大的努力做到最好,还希望到时候大家能给予建议和补充 ----------------2018.03.05 ...

  4. RabbitMQ学习笔记(五) Topic

    更多的问题 Direct Exchange帮助我们解决了分类发布与订阅消息的问题,但是Direct Exchange的问题是,它所使用的routingKey是一个简单字符串,这决定了它只能按照一个条件 ...

  5. Python爬虫入门教程 2-100 妹子图网站爬取

    妹子图网站爬取---前言 从今天开始就要撸起袖子,直接写Python爬虫了,学习语言最好的办法就是有目的的进行,所以,接下来我将用10+篇的博客,写爬图片这一件事情.希望可以做好. 为了写好爬虫,我们 ...

  6. python操作符笔记

    1.**两个乘号就是乘方,比如2**4,结果就是2的4次方,结果是16 2.//就是做浮点除法,并舍弃小数部分(注意不是四舍五入) 3.@是python中的修饰符,具体功能我没弄懂.

  7. github总结(4)--关于git reset --hard这个命令的惨痛教训

    背景叙述: 前几天,上传自己的个站到git上的时候,手欠脑发晕的用了次git reset --hard xxxxxx 命令.由于只在线上传入了一个index.html页面(自己都不知道自己咋想的,就这 ...

  8. 线程的私有领地 ThreadLocal

    从名字上看,『ThreadLocal』可能会给你一种本地线程的概念印象,可能会让你联想到它是一个特殊的线程. 但实际上,『ThreadLocal』却营造了一种「线程本地变量」的概念,也就是说,同一个变 ...

  9. 痞子衡嵌入式:一表全搜罗常见短距离无线通信协议(Wi-Fi/Bluetooth/ZigBee/Thread...)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是常见短距离无线通信协议. 短距离无线通信是物联网的基础,随着物联网IoT的火热发展,各种短距离无线通信协议也是层出不穷,这些协议标准各有 ...

  10. Joda-Time开源库

    Joda-Time是一个面向 Java™ 平台的易于使用的开源时间日期库. 依赖 <dependency> <groupId>joda-time</groupId> ...