写入Log错误日志
第一步创建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错误日志的更多相关文章
- Log错误日志级别
日志记录器(Logger)的级别顺序: 分为OFF.FATAL.ERROR.WARN.INFO.DEBUG.ALL或者您定义的级别.Log4j建议只使用四个级别,优先级 从高到低分别是 ERR ...
- SQL Server代理(5/12):理解SQL代理错误日志
SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. 如我们在这个系列的前几篇文章所见,SQL ...
- 第五篇 SQL Server代理理解代理错误日志
本篇文章是SQL Server代理系列的第五篇,详细内容请参考原文. 正如这一系列的前几篇所述,SQL Server代理作业是由一系列的作业步骤组成,每个步骤由一个独立的类型去执行.在第四篇中我们看到 ...
- mysql之 日志体系(错误日志、查询日志、二进制日志、事务日志、中继日志)
一. mysql错误日志:错误日志记录的事件:a).服务器启动关闭过程中的信息b).服务器运行过程中的错误信息c).事件调试器运行一个事件时间生的信息d).在从服务器上启动从服务器进程时产生的信息lo ...
- MySQL-五种日志(查询日志、慢查询日志、更新日志、二进制日志、错误日志)、备份及主从复制配置
开启查询日志: 配置文件my.cnf: log=/usr/local/mysql/var/log.log 开启慢查询: 配置文件my.cnf: log-slow-queries=/usr/local/ ...
- 【译】第五篇 SQL Server代理理解代理错误日志
本篇文章是SQL Server代理系列的第五篇,详细内容请参考原文. 正如这一系列的前几篇所述,SQL Server代理作业是由一系列的作业步骤组成,每个步骤由一个独立的类型去执行.在第四篇中我们看到 ...
- .Net Core中间件和过滤器实现错误日志记录
1.中间件的概念 ASP.NET Core的处理流程是一个管道,中间件是组装到应用程序管道中用来处理请求和响应的组件. 每个中间件可以: 选择是否将请求传递给管道中的下一个组件. 可以在调用管道中的下 ...
- [PHP] PHP在CLI环境下的错误日志
1.display_errors = Off;//控制php是否输出错误;在生产环境中输出会泄露敏感信息;建议记录错误而不是将它们发送到STDOUToff :不显示任何错误;stderr :向STDE ...
- MySQL 错误日志(Error Log)
同大多数关系型数据库一样,日志文件是MySQL数据库的重要组成部分.MySQL有几种不同的日志文件.通常包括错误日志文件,二进制日志,通用日志,慢查询日志,等等. 这些日志能够帮助我们定位mysqld ...
随机推荐
- H5与企业微信jssdk集成
H5与企业微信jssdk集成 一.公众号设置 注册企业微信,在应用与小程序栏目中,设置可信域名,配置公众号菜单.可信域名不得不说下,在最初开发时,认为设置并验证后,微信认证接口会实现跨域请求,其实并没 ...
- 利用U盘安装win2008r2系统的步骤
我们在公司或者家里,经常要安装各种系统,最近公司需要重新安装win2008r2系统.折腾了一天的时间,终于把系统装好了.将安装的步骤记录下来,方便大家查看,自己也做个记录. 1 准备win2008r2 ...
- 你应该知道的 volatile 关键字
前言 不管是在面试还是实际开发中 volatile 都是一个应该掌握的技能. 首先来看看为什么会出现这个关键字. 内存可见性 由于 Java 内存模型(JMM)规定,所有的变量都存放在主内存中,而每个 ...
- 『Tarjan算法 有向图的强连通分量』
有向图的强连通分量 定义:在有向图\(G\)中,如果两个顶点\(v_i,v_j\)间\((v_i>v_j)\)有一条从\(v_i\)到\(v_j\)的有向路径,同时还有一条从\(v_j\)到\( ...
- 『最短Hamilton路径 状态压缩DP』
状压DP入门 最短Hamilton路径 Description 给定一张 n(n≤20) 个点的带权无向图,点从 0~n-1 标号,求起点 0 到终点 n-1 的最短Hamilton路径. Hamil ...
- CSRF攻击原理及防御
一.CSRF攻击原理 CSRF是什么呢?CSRF全名是Cross-site request forgery,是一种对网站的恶意利用,CSRF比XSS更具危险性.想要深入理解CSRF的攻击特性我们有必要 ...
- RabbitMQ消息队列(六)-消息任务分发与消息ACK确认机制(.Net Core版)
在前面一章介绍了在.Net Core中如何使用RabbitMQ,至此入门的的部分就完成了,我们内心中一定还有很多疑问:如果多个消费者消费同一个队列怎么办?如果这几个消费者分任务的权重不同怎么办?怎么把 ...
- Linux基础知识第五讲,远程管理关机启动网卡命令
目录 一丶学习目标 二丶关机重启命令 三丶 查看或配置网卡信息 1.网卡与IP地址介绍 2.命令介绍 一丶学习目标 关机/重启 shutdown 查看或配置网卡信息 ifconfig ping 远程登 ...
- 学习编写Dockerfile
前言 我们学习docker的话,其主要目的还是要用来改变我们部署应用程序的传统习惯,达到解放生产力,解放人力的目的.这篇则自己来熟悉一下dockerfile常用命令.并且尝试改变下生产环境手动部署应用 ...
- 服务器端配置nodejs环境(使用pm2进程管理运行)
一.brew安装: 由于Mac没有装ubantu,所以不能用apt-get命令,在本地命令行下Mac安装homebrew替代: https://brew.sh 二.新开命令窗口,登录root用户,安 ...