热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

.net简单使用Log4net的方法(多个日志配置文件)

log4net是.net中常用的一个日志记录工具,下面这篇文章主要给大家介绍了关于.net简单使用Log4net的方法(多个日志配置文件),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧

前言:

几乎所有的大型应用都会有自己的用于跟踪调试的API。因为一旦程序被部署以后,就不太可能再利用专门的调试工具了。然而一个管理员可能需要有一套强大的日志系统来诊断和修复配置上的问题。所以这个时候就需要一个记录日志的工具。log4net是.Net下一个非常优秀的开源日志记录组件。log4net记录日志的功能非常强大。它可以将日志分不同的等级,以不同的格式,输出到不同的媒介。

那先来介绍一下:

开发工具vs2017

【注意项目名称不要为log4net,否者在之后配置log4net出错】

1】NuGet中引用Log4net包

2】添加web配置文件命名为log4new.config并在中写入以下代码

<&#63;xml version="1.0" encoding="utf-8"&#63;>


 
 
 
 
 
 

[3】在Global.asax中添加代码

//配置log4
log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo(Server.MapPath("~/Web.config")));

4】写一个LogHelper.cs但是注意在这个.cs文件的命名空间写上[assembly: log4net.Config.XmlConfigurator(COnfigFile= "log4net.config", Watch = true)]

注意ConfigFile 后面跟的是配置文件的相对路径

LogHelper代码

public class LogHelper
 {
  public static readonly ILog Log = LogManager.GetLogger("RollingLogFileAppender");
 

  //  log4j定义了8个级别的log(除去OFF和ALL,可以说分为6个级别),优先级从高到低依次为:OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、 ALL。 
  //ALL 最低等级的,用于打开所有日志记录。
  //DEBUG 指出细粒度信息事件对调试应用程序是非常有帮助的,主要用于开发过程中打印一些运行信息。 
  //INFO 消息在粗粒度级别上突出强调应用程序的运行过程。打印一些你感兴趣的或者重要的信息,这个可以用于生产环境中输出程序运行的一些重要信息,
  //WARN 表明会出现潜在错误的情形,有些信息不是错误信息,但是也要给程序员的一些提示。
  //ERROR 指出虽然发生错误事件,但仍然不影响系统的继续运行。打印错误和异常信息,如果不想输出太多的日志,可以使用这个级别。
  //FATAL 指出每个严重的错误事件将会导致应用程序的退出。这个级别比较高了。重大错误,这种级别你可以直接停止程序了。

  //TRACE designates finer-grained informational events than the DEBUG.Since:1.2.12,很低的日志级别,一般不会使用。 
  //OFF 最高等级的,用于关闭所有日志记录。
  //如果将log level设置在某一个级别上,那么比此级别优先级高的log都能打印出来。例如,如果设置优先级为WARN,那么OFF、FATAL、ERROR、WARN 4个级别的log能正常输出,而INFO、DEBUG、TRACE、 ALL级别的log则会被忽略。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。

  #region DEBUG 指出细粒度信息事件对调试应用程序是非常有帮助的,主要用于开发过程中打印一些运行信息。 
  public static void debug(string write)
  {

   Log.Debug("日志记录:" + write);
  }
  public static void debug(string write, Exception ex)
  {
   Log.Debug("日志记录:" + write + "。错误记载:" + ex.ToString());
  }
  #endregion
  #region INFO 消息在粗粒度级别上突出强调应用程序的运行过程。打印一些你感兴趣的或者重要的信息,这个可以用于生产环境中输出程序运行的一些重要信息,
  /// 
  /// 1
  /// 
  /// 
  public static void Info(string write)
  {
   Log.Info("日志记录:" + write);
  }
  public static void Info(string write, Exception ex)
  {
   Log.Info("日志记录:" + write + "。错误记载:" + ex.ToString());
  }
  #endregion
  #region WARN 表明会出现潜在错误的情形,有些信息不是错误信息,但是也要给程序员的一些提示。,可以使用这个级别。
  public static void warn(string write)
  {
   Log.Warn("日志记录:" + write);
  }
  public static void warn(string write, Exception ex)
  {
   Log.Warn("日志记录:" + write + "。错误记载:" + ex.ToString());
  }
  #endregion

  #region ERROR 指出虽然发生错误事件,但仍然不影响系统的继续运行。打印错误和异常信息,如果不想输出太多的日志,可以使用这个级别。
  public static void error(string write)
  {
   Log.Error("日志记录:" + write);
  }
  public static void error(string write, Exception ex)
  {
   Log.Error("日志记录:" + write + "。错误记载:" + ex.ToString());
  }
  #endregion
  #region FATAL 指出每个严重的错误事件将会导致应用程序的退出。这个级别比较高了。重大错误,这种级别你可以直接停止程序了。
  public static void fatal(string write)
  {
   Log.Fatal("日志记录:" + write);
  }
  public static void fatal(string write, Exception ex)
  {
   Log.Fatal("日志记录:" + write + "。错误记载:" + ex.ToString());
  }
  //#endregion


  #endregion



  //定义输出的日志内容
  public static string logMessage(SysLogMsg logMessage)
  {
   StringBuilder strInfo = new StringBuilder();
   strInfo.Append("\r\n1. 错误: >> 操作时间: " + logMessage.OperationTime + " 操作人: " + logMessage.UserName + " \r\n");
   strInfo.Append("2. 类名: " + logMessage.Class + " \r\n");
   strInfo.Append("3. 内容: " + logMessage.Content + "\r\n");
   strInfo.Append("-----------------------------------------------------------------------------------------------------------------------------\r\n");
   return strInfo.ToString();
  }
 }

5】最后可以开始写日志

可以自己定义一种日志格式【自己写一个model,定义几个参数 时间、操作人、类名等等】

最后根据log4new.config设置的路径找到日志所在【未定义的话一般在项目的bin/Debug 或者 bin/Release目录下】 第一个是默认格式日志,第二个是自己定的格式日志【都是string类型,只不过第二个使用\t\n换行,稍微美化一下输出格式】

表示在当前文件夹Log/Debug中

最后附上githup地址

总结:

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。


推荐阅读
  • Android LED 数字字体的应用与实现
    本文介绍了一种适用于 Android 应用的 LED 数字字体(digital font),并详细描述了其在 UI 设计中的应用场景及其实现方法。这种字体常用于视频、广告倒计时等场景,能够增强视觉效果。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • RecyclerView初步学习(一)
    RecyclerView初步学习(一)ReCyclerView提供了一种插件式的编程模式,除了提供ViewHolder缓存模式,还可以自定义动画,分割符,布局样式,相比于传统的ListVi ... [详细]
  • 本文详细介绍了 Java 中 org.apache.xmlbeans.SchemaType 类的 getBaseEnumType() 方法,提供了多个代码示例,并解释了其在不同场景下的使用方法。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 探讨如何真正掌握Java EE,包括所需技能、工具和实践经验。资深软件教学总监李刚分享了对毕业生简历中常见问题的看法,并提供了详尽的标准。 ... [详细]
  • 本文介绍了多个关于JavaScript的书籍资源、实用工具和编程实例,涵盖从入门到进阶的各个阶段,帮助读者全面提升JavaScript编程能力。 ... [详细]
  • 本文基于对相关论文和开源代码的研究,详细介绍了LOAM(激光雷达里程计与建图)的工作原理,并对其关键技术进行了分析。 ... [详细]
  • 本文详细介绍了Java中org.neo4j.helpers.collection.Iterators.single()方法的功能、使用场景及代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
  • 本文详细介绍了 GWT 中 PopupPanel 类的 onKeyDownPreview 方法,提供了多个代码示例及应用场景,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 资源推荐 | TensorFlow官方中文教程助力英语非母语者学习
    来源:机器之心。本文详细介绍了TensorFlow官方提供的中文版教程和指南,帮助开发者更好地理解和应用这一强大的开源机器学习平台。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 构建基于BERT的中文NL2SQL模型:一个简明的基准
    本文探讨了将自然语言转换为SQL语句(NL2SQL)的任务,这是人工智能领域中一项非常实用的研究方向。文章介绍了笔者在公司举办的首届中文NL2SQL挑战赛中的实践,该比赛提供了金融和通用领域的表格数据,并标注了对应的自然语言与SQL语句对,旨在训练准确的NL2SQL模型。 ... [详细]
  • PHP插件机制的实现方案解析
    本文深入探讨了PHP中插件机制的设计与实现,旨在分享一种可行的实现方式,并邀请读者共同讨论和优化。该方案不仅涵盖了插件机制的基本概念,还详细描述了如何在实际项目中应用。 ... [详细]
author-avatar
放逐凌晨_690
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有