写入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 ...
随机推荐
- 微信小程序中样式问题
1.去除button按钮的默认样式 这是button按钮自带的默认样式 button { position:relative; display:block; margin-left:auto; mar ...
- ASP.Net Core项目在Mac上使用Entity Framework Core 2.0进行迁移可能会遇到的一个问题.
在ASP.Net Core 2.0的项目里, 我使用Entity Framework Core 2.0 作为ORM. 有人习惯把数据库的连接字符串写在appSettings.json里面, 有的习惯写 ...
- 【Spark篇】---Spark资源调度和任务调度
一.前述 Spark的资源调度是个很重要的模块,只要搞懂原理,才能具体明白Spark是怎么执行的,所以尤其重要. 自愿申请的话,本文分粗粒度和细粒度模式分别介绍. 二.具体 Spark资源调度流程图: ...
- .NET Core实战项目之CMS 第十三章 开发篇-在MVC项目结构介绍及应用第三方UI
作为后端开发的我来说,前端表示真心玩不转,你如果让我微调一个位置的样式的话还行,但是让我写一个很漂亮的后台的话,真心做不到,所以我一般会选择套用一些开源UI模板来进行系统UI的设计.那如何套用呢?今天 ...
- asp.net core AuthenticationMiddleware 在WebApi中的的使用
在.net framework 4.5架构下使用认证(Authentication)授权(Authorization). IIS使用HttpModule进行认证(Authentication),我们可 ...
- [Python Web]部署完网站需要做的基本后续工作
简述 今天自己上线了一个简单的 Page,没有什么功能就是一个展示页. 但是,我发现部署完,上线后,还要弄不少东西.下面就是我记录.整理的一些上线网站基本都会用到的网站和配置. 加入统计代码 这个是必 ...
- Linux~Sh脚本一点自己的总结
从.netCore开源项目来看,eShopOnContainers来说,它的部署是跨平台的,可以部署在linux,docker上,在linux上运行它也可以写一些集成的小脚本,这是微信工程师为我们提供 ...
- Mongodb~Linux环境下的部署~服务的部署与自动化
<mongodb在linux上的部署> 事实上redis安装程序挺好,直接帮我们生成了服务,直接可以使用systemctl去启动它,而mongodb在这方面没有那么智能,需要我们去编写自己 ...
- 如何在SpringBoot中集成JWT(JSON Web Token)鉴权
这篇博客主要是简单介绍了一下什么是JWT,以及如何在Spring Boot项目中使用JWT(JSON Web Token). 1.关于JWT 1.1 什么是JWT 老生常谈的开头,我们要用这样一种工具 ...
- Classifying with k-Nearest Neighbors(k近邻)
终于要开始写自己的第一篇博客啦,真有点小激动(手足无措 =.=!).因为最近正在琢磨机器学习,第一篇博客就从学的第一个算法开始:k-nearest neighbors algorithm即k近邻算法. ...