Log4Net的WebApplication使用

一、Log4Net的WebApplication使用

 1、首先使用nuget 添加log4Net 到WebApplication项目中

log4j每个符号的具体含义:%d %5p %c{1}:%L - %m%n

log4j.properties

# %m 输出代码中指定的消息
# %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
# %r 输出自应用启动到输出该log信息耗费的毫秒数
# %c 输出所属的类目,通常就是所在类的全名
# %t 输出产生该日志事件的线程名
# %n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
# %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
# %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。
log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

#日志文件 每日
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.File=F:/mylog.txt
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
#%时间 [%线程] %log级别 %完整类名 - %消息 %换行
log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

2、在WebApplication项目的App.config中添加下面内容(只要是设置日志的添加类型,路径等)

<log4net>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Log\Log.txt" />
<param name="AppendToFile" value="true" />
<param name="MaxSizeRollBackups" value="100" />
<param name="MaximumFileSize" value="2MB" />
<param name="RollingStyle" value="Size" />
<param name="StaticLogFileName" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%-15p %d [%c] %m%n" />
</layout>
</appender>

<appender name="consoleApp" type="log4net.Appender.ConsoleAppender,log4net">//控制台输出

<layout type="log4net.Layout.PatternLayout,log4net">

<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />

</layout>

</appender>

<root>
<level value="all" />
<appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>

3、在WebApplication项目的Properties中的AssemblyInfo.cs中添加下面内容

[assembly: log4net.Config.DOMConfigurator(Watch = true)](不建议使用,已经过时了)
[assembly: log4net.Config.XmlConfigurator(ConfigFileExtension = "config", Watch = true)]

4、在MVC 项目则是在  Global.asax.cs文件中添加下面内容

public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
log4net.Config.XmlConfigurator.Config();//处理log4日志
}
}

4、在WinForm项目启动项项目中使用

static class Program
{
public static log4net.ILog LOG = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
//捕获未处理异常
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}

static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
{
LOG.Error(e.Exception);
//throw new Exception("线程未知异常", e.Exception);
MessageBox.Show(e.Exception.Message, "线程异常", MessageBoxButtons.OK, MessageBoxIcon.Error);
Application.Exit();
}

static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
Exception ex = e.ExceptionObject as Exception;
LOG.Error(ex);
MessageBox.Show(ex.Message, "应用程序异常", MessageBoxButtons.OK, MessageBoxIcon.Error);
Application.Exit();
}
}

 1、首先使用nuget 添加log4Net 到WinForm项目中

log4j每个符号的具体含义:%d %5p %c{1}:%L - %m%n

log4j.properties

# %m 输出代码中指定的消息
# %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
# %r 输出自应用启动到输出该log信息耗费的毫秒数
# %c 输出所属的类目,通常就是所在类的全名
# %t 输出产生该日志事件的线程名
# %n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
# %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
# %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。
log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

#日志文件 每日
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.File=F:/mylog.txt
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
#%时间 [%线程] %log级别 %完整类名 - %消息 %换行
log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

2、在WinForm项目的App.config中添加下面内容(只要是设置日志的添加类型,路径等)

<log4net>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Log\Log.txt" />
<param name="AppendToFile" value="true" />
<param name="MaxSizeRollBackups" value="100" />
<param name="MaximumFileSize" value="2MB" />
<param name="RollingStyle" value="Size" />
<param name="StaticLogFileName" value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%-15p %d [%c] %m%n" />
</layout>
</appender>
<root>
<level value="all" />
<appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>

3、在WinForm项目的Properties中的AssemblyInfo.cs中添加下面内容

[assembly: log4net.Config.DOMConfigurator(Watch = true)](不建议使用,已经过时了)
[assembly: log4net.Config.XmlConfigurator(ConfigFileExtension = "config", Watch = true)]

4、在WinForm项目启动项项目中使用

static class Program
{
public static log4net.ILog LOG = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
/// <summary>
/// 应用程序的主入口点。
/// </summary>

class Program
{
static log4net.ILog Log = log4net.LogManager.GetLogger(typeof(Program));
static void Main(string[] args)
{
Log.Info("111111111111111111111111");
Log.Warn("111111111111111111111111");
Log.Error("111111111111111111111111");
}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/284950.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言试题191之实现strcat函数功能

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款刷算法、笔试、面经、拿大公司offer神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目: 实现st…

eclipse启动tomcat无法访问

症状&#xff1a; tomcat在eclipse里面能正常启动&#xff0c;而在浏览器中访问http://localhost:8080/不能访问&#xff0c;且报404错误。同时其他项目页面也不能访问。 关闭eclipse里面的tomcat&#xff0c;在tomcat安装目录下双击startup.bat手动启动tomcat服务器。访问htt:…

[转]IntelliJ IDEA 2020.1 正式发布,15 项重大特性、官方支持中文了!

头图&作者 | YourBatman&#xff0c;CSDN博客专家 责编 | 唐小引 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 前言 千呼万唤始出来&#xff01;自从官方在 2020-01-20 发布了其 2020 年的 Roadmap 后&#xff0c;我便持续关注着、期待着 JetBrains Intell…

【ArcGIS遇上Python】ArcGIS批量为多个矢量图层添加一个或多个字段(Add Field)案例实现

多个人在利用ArcGIS做数字化之后,需要批量为多个图层添加一个或者多个相同的字段,挨个手动添加字段显然不可取。ArcGIS Python提供了快速高效的批量添加字段的解决方案。本文以土地利用数据(Landuse1和Landuse2)为例,采用简单的Python代码实现了文中两个矢量图层批量添加字…

可下载!Vue3+.NET6实战系列:通用管理后台

.NET Framework停更3年&#xff0c;4月份还又停止了3个版本支持&#xff0c;居然还有人没怎么接触.NET跨平台&#xff01;真的该好好学下.NET6了&#xff0c;已经是不得不学了&#xff01;好好看下这套《Vue3.NET6前后端分离电商实战》免费教程&#xff0c;完整的源码视频课件全…

C语言试题192之实现strchr函数功能

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款刷算法、笔试、面经、拿大公司offer神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目: 实现st…

简单团队-爬取豆瓣电影TOP250-需求分析

1.实现登录界面 2.搜集相关电影网址 3..按照一定条件爬取电影&#xff0c;实现相关代码部分 项目步骤&#xff1a; 分析豆瓣电影TOP250的url规则, 编写模块获取相关url分析html中有关"排名,分数,名字,简介,导演,演员,前10条影评信息,链接信息"的标签编写将"搜集…

一个想法:成立草根技术联盟对开发人员进行技术定级解决企业员工招聘难问题!...

背景&#xff1a; 吃饭前&#xff0c;想起了<甄嬛传>中皇弟叹息的一句&#xff1a;千军易得&#xff0c;良将难寻&#xff01; 又逢CTO群里有友人让我帮忙评估其公司的项目及技术&#xff0c;一番review code&#xff0c;估计要写那代码的人要落岗了~ 不由想起&#xff0…

对软件工程这门课的收获与总结

转眼间八周已经过去&#xff0c;《现代软件工程》这门课程也在这周结束了。在宋老师的教导下&#xff0c;以及在个人项目以及团队项目的参与中我确实收获了许多。我觉得我有必要将这八周所获得的经验也好&#xff0c;教训也好都记录下来&#xff0c;相信这也会对未来的自己有所…

[转]C++二进制完成加减乘除

首先介绍计算机的二进制码 二进制常用的有原码&#xff0c;反码和补码&#xff0c;他们都是由最左边的一个符号位和右边的数值位构成。在计算机中为了更低成本的计算&#xff0c;数据都是用补码来存储和运算的。 原码 最高位表示符号位&#xff08;0代表正数&#xff0c;1代…

WGS84(GPS)、火星坐标系(GCJ02)、百度地图(BD09)坐标系转换案例教程(附转换工具下载)

在做基于百度地图、高德地图等电子地图做为地图服务的二次开发时,通常需要将具有WGS84等坐标的矢量数据(如行政区划、地名、河流、道路等GIS地理空间数据)添加到地图上面,然而,在线地图大多使用的是火星坐标系,需要事先将矢量数据转为火星坐标系。本文以案例的形式,讲述…

.NET 6 AssemblyLoadContext DLL 库 热插拔逻辑实现

曾经也实现过.Net Framework 基于AppDomain 的 dll库热插拔&#xff0c;经历了版本的迭代&#xff0c;.Net Core 不支持 AppDomain&#xff0c;之前也搞过.Net Core 3.1 版本的&#xff0c;现在搞一下子.NET 6.0的。热插拔运用的场景主要运用到宿主与插件这个场景或者动态任务的…

C语言试题193之实现strcmp函数功能

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款刷算法、笔试、面经、拿大公司offer神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目: 实现st…

浅谈Java多线程同步机制之同步块(方法)——synchronized

在多线程访问的时候&#xff0c;同一时刻只能有一个线程能够用 synchronized 修饰的方法或者代码块&#xff0c;解决了资源共享。下面代码示意三个窗口购5张火车票&#xff1a; 1 package com.jikexueyuan.thread;2 /*3 * 未使用synchronized&#xff0c;存在并发4 */5 class…

[转]Webpack5(从入门到精通)

这里写目录标题 1、webpack 初体验 全局安装webpack2.打包样式资源 创建webpack.config.js文件&#xff08;配置文件&#xff09;3.打包html资源 webpack.config.js文件&#xff08;配置文件&#xff09;4.打包图片资源 webpack.config.js文件&#xff08;配置文件&#xff09;…

mybatis由浅入深day01_5mybatis开发dao的方法(5.1SqlSession使用范围_5.2原始dao开发方法)...

5 mybatis开发dao的方法 5.1 SqlSession使用范围 5.1.1 SqlSessionFactoryBuilder 通过SqlSessionFactoryBuilder创建会话工厂SqlSessionFactory 将SqlSessionFactoryBuilder当成一个工具类使用即可&#xff0c;不需要使用单例管理SqlSessionFactoryBuilder。 在需要创建SqlSes…

做⼀个⾼德地图的 iOS / Android MAUI 控件(上)

点击上方蓝字关注我们&#xff08;本文阅读时间&#xff1a;10分钟)Microsoft Build 2022 ⼤会上正式发布了 .NET MAUI , 对于 .NET 开发者可以⽤ C# 完成跨平台的前端应⽤开发。对⽐起 MAUI 的前身 Xamarin , MAUI 除了可以⽤传统的原⽣开发模式外&#xff0c;还⽀持了 Blazor…

易康eCognition Developer 9.01安装教程(附eCognition下载地址及中文教程)

eCognition是由德国Definiens Imaging公司2009年推出的智能化影像分析软件,2010年被美国Trimble公司收购。eCognition是目前所有商用遥感软件中第一个基于目标信息的遥感信息提取软件,它采用决策专家系统支持的模糊分类算法,突破了传统商业遥感软件单纯基于光谱信息进行影像…

[改善Java代码]不要覆写静态方法

建议33&#xff1a; 不要覆写静态方法 我们知道在Java中可以通过覆写&#xff08;Override&#xff09;来增强或减弱父类的方法和行为&#xff0c;但覆写是针对非静态方法&#xff08;也叫做实例方法&#xff0c;只有生成实例才能调用的方法&#xff09;的&#xff0c;不能针对…

C语言试题194之实现strcpy函数功能

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款刷算法、笔试、面经、拿大公司offer神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目: 实现st…