精华内容
下载资源
问答
  • 重要申明:本文转自https://www.imooc.com/article/21178本文介绍了一下自己在Java项目中使用log的一些总结,从日志的作用、日志的选用、日志级别介绍、日志记录的一些最佳实践几个方面阐述。日志的作用主要作用包括...

    重要申明:本文转自https://www.imooc.com/article/21178

    本文介绍了一下自己在Java项目中使用log的一些总结,从日志的作用、日志的选用、日志级别介绍、日志记录的一些最佳实践几个方面阐述。

    日志的作用

    主要作用包括:

    1、出问题后定位当时问题

    2、显示程序当前运行状态

    日志的选用

    Java里存在众多的开源日志框架: slf4j, logback, log4j, JCL(Apache Common Logging), JUL(JDK自带的java.util.logging)等。这其中slf4j属于一套简洁的日志API,其并不包含日志的实现(它并不负责日志输出等,JCL也包含API)。

    slf4j提供了众多的适配器可以适配其他所有开源日志框架,这样让我们在代码中只需面对slf4j的API,然后可以任意切换日志的实现。你可能会讲我们并不需要切换日志框架这种功能,但是我们项目中需要使用大量的第三方库,而这些第三方库使用的日志框架各不相同,不同的日志框架需要不同的配置,不同的配置会导致日志输出到不同的位置。

    一个应用肯定需要将日志level,日志输出等收纳起来统一管理。对于这种情况,我们可以使用slf4j的适配器将第三方库中各种日志的实现接管,接管之后就可以统一配置这些第三方库中使用的日志了。

    在这些日志实现框架中又数logback性能最优,所以在选择日志实现的时候推荐使用logback。

    日志级别介绍

    level 定义简直就是一门艺术,  好的定义应该遵循以下原则:

    debug:完整详细的记录流程的关键路径. 应该用于开发人员比较感兴趣的跟踪和调试信息, 生产环境中正常都不会打开debug状态

    info:应该简洁明确让管理员确认状态。记录相当重要的,对于最终用户和系统管理员有意义的消息。关键系统参数的回显、后台服务的初始化状态、需要系统管理员知会确认的关键信息都需要使用INFO级别

    warn:能清楚的告知所有人发生了什么情况.能引起人的重视,指示潜在问题,但不一定需要处理。

    error:系统出现了异常或不期望出现的问题,希望及时得到关注的处理。需要注意的一个点,不是所有的异常都需要记录成error。

    日志记录的一些最佳实践

    以下可以根据项目实际情况当做规范使用:

    1、tomcat配置access日志,记录每次http请求相关信息

    2、dubbo配置access日志,记录dubbo consumer和provider的每次请求调用和处理

    3、在系统里调用外部的地方,记录请求的接口、参数、返回结果、花费时间、遇到的异常等

    4、在系统里出现异常的地方,记录异常的堆栈,如果可以,尽量通过异常的日志能还原当时的情景,比如当时受影响的是哪个用户、传入的变量是什么、处理哪些核心数据引发的异常等等

    5、有些代码在编写时就知道很难被执行到或者不希望被执行到、以及一些基本不会走到的else块,这些地方需要记录下核心日志

    6、禁止使用 System.out 或 System.error

    7、禁止使用 Apache Commons Logging , Java Util Logging,推荐使用slf4j,推荐使用Logback,代码中使用Slf4j记录日志

    8、业务日志使用独立的日志配置,不能采用className。举个例子,我之前在qunar做项目时,涉及打通许多第三方管理系统,和每一个第三方的交互的日志都会单独存储到一个日志文件中

    9、INFO及以上的系统日志统一输出到Console。在生产环境中如果将系统log切分成多个文件, 是非常不利于问题排查的. 不仅要同时追找多个文件, 还要匹配问题发生的时间点. 最要命的是, 有些异常是被print到 console里的。

    10、日志配置Rolling,可以根据实际情况配置按天、按小时进行轮转,生成新的日志文件

    11、记录程序状态需要包含发生时间(一般框架里就会带上)、大数据量更新的进度、关键变量及正在做哪些重要事情。

    12、不同的日志文件尽量使用同样的格式输出(logback配置同样的pattern), 这样方便脚本通用及第三方解析

    结尾

    如何在项目里记录好日志是一门学问,也是一门艺术。这里把自己目前想到的总结一下,欢迎指正,也欢迎有更多的最佳实践能分享出来。

    展开全文
  • 本文介绍了Java项目中使用log的一些总结,从日志的作用、日志的选用、日志级别介绍、日志记录的一些最佳实践几个方面阐述。 日志的作用 主要作用包括: 1、出问题后定位当时问题 2、显示程序当前运行状态 日志...

    本文介绍了Java项目中使用log的一些总结,从日志的作用、日志的选用、日志级别介绍、日志记录的一些最佳实践几个方面阐述。

    日志的作用

    主要作用包括:

    1、出问题后定位当时问题

    2、显示程序当前运行状态

    日志的选用

    Java里存在众多的开源日志框架: slf4j, logback, log4j, JCL(Apache Common Logging), JUL(JDK自带的java.util.logging)等。这其中slf4j属于一套简洁的日志API,其并不包含日志的实现(它并不负责日志输出等,JCL也包含API)。

    slf4j提供了众多的适配器可以适配其他所有开源日志框架,这样让我们在代码中只需面对slf4j的API,然后可以任意切换日志的实现。你可能会讲我们并不需要切换日志框架这种功能,但是我们项目中需要使用大量的第三方库,而这些第三方库使用的日志框架各不相同,不同的日志框架需要不同的配置,不同的配置会导致日志输出到不同的位置。

    一个应用肯定需要将日志level,日志输出等收纳起来统一管理。对于这种情况,我们可以使用slf4j的适配器将第三方库中各种日志的实现接管,接管之后就可以统一配置这些第三方库中使用的日志了。

    在这些日志实现框架中又数logback性能最优,所以在选择日志实现的时候推荐使用logback。

    日志级别介绍

    level 定义简直就是一门艺术,  好的定义应该遵循以下原则:

    debug:完整详细的记录流程的关键路径. 应该用于开发人员比较感兴趣的跟踪和调试信息, 生产环境中正常都不会打开debug状态

    info:应该简洁明确让管理员确认状态。记录相当重要的,对于最终用户和系统管理员有意义的消息。关键系统参数的回显、后台服务的初始化状态、需要系统管理员知会确认的关键信息都需要使用INFO级别

    warn:能清楚的告知所有人发生了什么情况.能引起人的重视,指示潜在问题,但不一定需要处理。

    error:系统出现了异常或不期望出现的问题,希望及时得到关注的处理。需要注意的一个点,不是所有的异常都需要记录成error。

    日志记录的一些最佳实践

    以下可以根据项目实际情况当做规范使用:

    1、tomcat配置access日志,记录每次http请求相关信息

    2、dubbo配置access日志,记录dubbo consumer和provider的每次请求调用和处理

    3、在系统里调用外部的地方,记录请求的接口、参数、返回结果、花费时间、遇到的异常等

    4、在系统里出现异常的地方,记录异常的堆栈,如果可以,尽量通过异常的日志能还原当时的情景,比如当时受影响的是哪个用户、传入的变量是什么、处理哪些核心数据引发的异常等等

    5、有些代码在编写时就知道很难被执行到或者不希望被执行到、以及一些基本不会走到的else块,这些地方需要记录下核心日志

    6、禁止使用 System.out 或 System.error

    7、禁止使用 Apache Commons Logging , Java Util Logging,推荐使用slf4j,推荐使用Logback,代码中使用Slf4j记录日志

    8、业务日志使用独立的日志配置,不能采用className。举个例子,我之前在qunar做项目时,涉及打通许多第三方管理系统,和每一个第三方的交互的日志都会单独存储到一个日志文件中

    9、INFO及以上的系统日志统一输出到Console。在生产环境中如果将系统log切分成多个文件, 是非常不利于问题排查的. 不仅要同时追找多个文件, 还要匹配问题发生的时间点. 最要命的是, 有些异常是被print到 console里的。

    10、日志配置Rolling,可以根据实际情况配置按天、按小时进行轮转,生成新的日志文件

    11、记录程序状态需要包含发生时间(一般框架里就会带上)、大数据量更新的进度、关键变量及正在做哪些重要事情。

    12、不同的日志文件尽量使用同样的格式输出(logback配置同样的pattern), 这样方便脚本通用及第三方解析

    结尾

    如何在项目里记录好日志是一门学问,也是一门艺术。这里把自己目前想到的总结一下,欢迎指正,也欢迎有更多的最佳实践能分享出来。

    展开全文
  • C# 使用Log4Net记录日志

    2015-02-27 21:31:46
    C# 使用Log4Net记录日志
  • 使用Log4net记录日志

    千次阅读 2016-04-05 11:16:46
    使用Log4net记录日志  首先说说为什么要进行日志记录。在一个完整的程序系统里面,日志系统是一个非常重要的功能组成部分。它可以记录下系统所产生的所有行为,并按照某种规范表达出来。我们可以使用日志系统所...

    个人网站: 友书小说网 欢迎访问,收录了大量小说,全部免费,没有广告 微笑

    使用Log4net记录日志

         首先说说为什么要进行日志记录。在一个完整的程序系统里面,日志系统是一个非常重要的功能组成部分。它可以记录下系统所产生的所有行为,并按照某种规范表达出来。我们可以使用日志系统所记录的信息为系统进行排错,优化系统的性能,或者根据这些信息调整系统的行为。

         Log4net是一个很著名的开源的日志记录组件。官方网址为:http://logging.apache.org/log4net/ ,使用Log4net能够很简单的为我们的程序添加日志记录功能。下面我们先通过一个网站例子来说明如何在.net中使用log4net。

    创建日志记录步骤

    第一步,

           当然是添加log4net.dll的引用啦,我这里提供一个log4net的dll文件,懒得去官网下的可以到这里下http://www.vdisk.cn/down/index/7509396A7366

    第二步,

           在AssemblyInfo.cs文件中添加下面一句话:

    [assembly: log4net.Config.XmlConfigurator(ConfigFile = "Web.config", Watch = true)]
    

    这句话的意思是log4net会自动寻找配置文件App.config或Web.config从而获得并加载其中的配置信息。如果想log4net随时监视配置文件以便重新加载的话就要这样写按照上面一样写(winform程序ConfigFile为App.config)。

    第三步,

          配置Web.config。

    <configuration>
    
      <configSections>
    
            <!--注意:这里需要添加--> 
            <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/> 
       </configSections> 
      <connectionStrings> 
        <add name="ApplicationServices" 
             connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true" 
             providerName="System.Data.SqlClient" /> 
      </connectionStrings>
    
      
    
       <!--注意:这里需要添加-->
    
       <log4net>
    
    
            <!--定义输出到文件中--> 
            <appender name="LogFileAppender" type="log4net.Appender.FileAppender"> 
                <!--定义文件存放位置--> 
                <file value="C:\log.txt" /> 
                <appendToFile value="true" /> 
                <rollingStyle value="Date" /> 
                <datePattern value="yyyyMMdd-HH:mm:ss" /> 
                <layout type="log4net.Layout.PatternLayout"> 
                    <!--输出格式--> 
                    <!--样例:2008-03-26 13:42:32,111 [10] INFO  Log4NetDemo.MainClass [(null)] - info--> 
                    <conversionPattern value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 出错类:%logger property:[%property{NDC}] - 错误描述:%message%newline" /> 
                </layout> 
            </appender>
    
    
            <!--定义输出到控制台命令行中--> 
            <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> 
                <layout type="log4net.Layout.PatternLayout"> 
                    <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> 
                </layout> 
            </appender>
    
    
            <!--定义输出到windows事件中--> 
            <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender"> 
                <layout type="log4net.Layout.PatternLayout"> 
                    <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> 
                </layout> 
            </appender>
    
    
            <!--定义输出到数据库中,这里举例输出到Access数据库中,数据库为C盘的log4net.mdb--> 
            <appender name="AdoNetAppender_Access" type="log4net.Appender.AdoNetAppender"> 
                <connectionString value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:log4net.mdb" /> 
                <commandText value="INSERT INTO LogDetails ([LogDate],[Thread],[Level],[Logger],[Message]) VALUES (@logDate, @thread, @logLevel, @logger,@message)" /> 
                <!--定义各个参数--> 
                <parameter> 
                    <parameterName value="@logDate" /> 
                    <dbType value="String" /> 
                    <size value="240" /> 
                    <layout type="log4net.Layout.PatternLayout"> 
                        <conversionPattern value="%date" /> 
                    </layout> 
                </parameter> 
                <parameter> 
                    <parameterName value="@thread" /> 
                    <dbType value="String" /> 
                    <size value="240" /> 
                    <layout type="log4net.Layout.PatternLayout"> 
                        <conversionPattern value="%thread" /> 
                    </layout> 
                </parameter> 
                <parameter> 
                    <parameterName value="@logLevel" /> 
                    <dbType value="String" /> 
                    <size value="240" /> 
                    <layout type="log4net.Layout.PatternLayout"> 
                        <conversionPattern value="%level" /> 
                    </layout> 
                </parameter> 
                <parameter> 
                    <parameterName value="@logger" /> 
                    <dbType value="String" /> 
                    <size value="240" /> 
                    <layout type="log4net.Layout.PatternLayout"> 
                        <conversionPattern value="%logger" /> 
                    </layout> 
                </parameter> 
                <parameter> 
                    <parameterName value="@message" /> 
                    <dbType value="String" /> 
                    <size value="240" /> 
                    <layout type="log4net.Layout.PatternLayout"> 
                        <conversionPattern value="%message" /> 
                    </layout> 
                </parameter> 
            </appender>
    
    
            <!--定义日志的输出媒介,下面定义日志以四种方式输出。也可以下面的按照一种类型或其他类型输出。--> 
            <root> 
                <!--文件形式记录日志--> 
                <appender-ref ref="LogFileAppender" /> 
                <!--控制台控制显示日志--> 
                <appender-ref ref="ConsoleAppender" /> 
                <!--Windows事件日志--> 
                <!--<appender-ref ref="EventLogAppender" />--> 
                <!-- 如果不启用相应的日志记录,可以通过这种方式注释掉 
                    <appender-ref ref="AdoNetAppender_Access" /> 
                --> 
            </root>
    
        </log4net>
    
    
      <system.web> 
        <compilation debug="true" targetFramework="4.0" /> 
        <httpModules>
    
          <add name="fileUpload" type="WebApplication3.ProcessFileModule"/> 
        </httpModules> 
        <authentication mode="Forms"> 
          <forms loginUrl="~/Account/Login.aspx" timeout="2880" /> 
        </authentication>
    
        <membership> 
          <providers> 
            <clear/> 
            <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" 
                 enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" 
                 maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" 
                 applicationName="/" /> 
          </providers> 
        </membership>
    
        <profile> 
          <providers> 
            <clear/> 
            <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/> 
          </providers> 
        </profile>
    
        <roleManager enabled="false"> 
          <providers> 
            <clear/> 
            <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" /> 
            <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" /> 
          </providers> 
        </roleManager> 
        <httpRuntime maxRequestLength="10240000"/> 
      </system.web>
    
      <system.webServer> 
        <modules runAllManagedModulesForAllRequests="true"/> 
      </system.webServer>
    
    </configuration>
    

    上面这段配置取自周公,配置的说明上面已经注释的比较详细了。

    第四步,

    在程序中记录信息。我们在项目下Default.aspx的Page_Load方法加入如下代码:

               //获得log4net实例 
               ILog log = log4net.LogManager.GetLogger("LogFileAppender"); 
               log.Info("Default.aspx下面的PageLoad方法被执行");
    

    然后运行项目,可以发现在c:\log4netfile.txt中已经记录了一条日志信息:

    记录时间:2011-04-21 21:26:17,729 线程ID:[4] 日志级别:INFO  出错类:LogFileAppender property:[(null)] - 错误描述:Default.aspx下面的PageLoad方法被执行
    

    通过上面这几步我想您已经能够为程序创建一些简单日志记录功能了。下面我们再来详细说说log4net其他的一些使用方法与特点。

    log4net详细说明

        这里我通过问答的形式来说明log4net的一些应用。

    1.log4net总共有几种记录方式,每种方式该如何配置与使用?

    Log4net目前支持的输出方式包括:

    1 AdoNetAppender
    
         将日志记录到数据库中。可以采用SQL和存储过程两种方式。
    
    2 AnsiColorTerminalAppender
    
         在ANSI 窗口终端写下高亮度的日志事件。
    
    3 AspNetTraceAppender
    
         能用asp.net中Trace的方式查看记录的日志。
    
    4 BufferingForwardingAppender
    
         在输出到子Appenders之前先缓存日志事件。
    
    5 ConsoleAppender
    
         将日志输出到控制台。
    
    6 EventLogAppender
    
         将日志写到Windows Event Log.
    
    7 FileAppender
    
         将日志写到文件中。
    
    8 LocalSyslogAppender
    
         将日志写到local syslog service (仅用于UNIX环境下).
    
    9 MemoryAppender
    
         将日志存到内存缓冲区。
    
    10 NetSendAppender
    
         将日志输出到Windows Messenger service.这些日志信息将在用户终端的对话框中显示。
    
    11 RemoteSyslogAppender
    
         通过UDP网络协议将日志写到Remote syslog service。
    
    12 RemotingAppender
    
         通过.NET Remoting将日志写到远程接收端。
    
    13 RollingFileAppender
    
         将日志以回滚文件的形式写到文件中。
    
    14 SmtpAppender
    
         将日志写到邮件中。
    
    15 TraceAppender
    
         将日志写到.NET trace 系统。
    
    16 UdpAppender
    
         将日志connectionless UDP datagrams的形式送到远程宿主或以UdpClient的形式广播。
    

     

    可以看到目前支持的方式还是很多的,我这里调几个认为常用的做个例子。

      1.文件的方式我们上面已经讲过了,这里不再做例子了。

      2.数据库方式:

        首先,添加数据库记录appender

    <appender name="AdoNetAppender_Access" type="log4net.Appender.AdoNetAppender"> 
            <!--数据库连接字符串--> 
            <connectionString value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:log4net.mdb" /> 
            <commandText value="INSERT INTO LogDetails ([LogDate],[Thread],[Level],[Logger],[Message]) VALUES (@logDate, @thread, @logLevel, @logger,@message)" /> 
            <!--定义各个参数--> 
            <parameter> 
                <parameterName value="@logDate" /> 
                <dbType value="String" /> 
                <size value="240" /> 
                <layout type="log4net.Layout.PatternLayout"> 
                    <conversionPattern value="%date" /> 
                </layout> 
            </parameter> 
            <parameter> 
                <parameterName value="@thread" /> 
                <dbType value="String" /> 
                <size value="240" /> 
                <layout type="log4net.Layout.PatternLayout"> 
                    <conversionPattern value="%thread" /> 
                </layout> 
            </parameter> 
            <parameter> 
                <parameterName value="@logLevel" /> 
                <dbType value="String" /> 
                <size value="240" /> 
                <layout type="log4net.Layout.PatternLayout"> 
                    <conversionPattern value="%level" /> 
                </layout> 
            </parameter> 
            <parameter> 
                <parameterName value="@logger" /> 
                <dbType value="String" /> 
                <size value="240" /> 
                <layout type="log4net.Layout.PatternLayout"> 
                    <conversionPattern value="%logger" /> 
                </layout> 
            </parameter> 
            <parameter> 
                <parameterName value="@message" /> 
                <dbType value="String" /> 
                <size value="240" /> 
                <layout type="log4net.Layout.PatternLayout"> 
                    <conversionPattern value="%message" /> 
                </layout> 
            </parameter> 
        </appender>

    然后建立c:log4net.mdb 数据库,并在代码中启用数据库记录方式:

               //获得log4net实例 
               ILog log = log4net.LogManager.GetLogger("AdoNetAppender_Access"); 
               log.Debug("Default.aspx下面的PageLoad方法被执行");

    这样日志就被记录到数据库中了。

    2.log4net如何过滤我想要的日志信息,比如一个日志中只记录程序错误日志?

    这个需求可以通过配置filter来实现。具体操作如下:

        全局方式

        这种方式会将级别应用于所有的日志输入方式。具体操作为在root节点下添加:

         <!--控制级别,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF 
             比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录 
         --> 
         <!--如果没有定义LEVEL的值,则缺省为DEBUG--> 
         <level value="ERROR" />

    这样对于所有的日志记录方式,所有地域ERROR级别的都不会被记录了。

         单独配置级别方式:

          该方式不会影响其他的日志输入方式。方法如下为,在具体的appender下添加filter:

              <filter type="log4net.Filter.LevelRangeFilter"> 
                   <param name="LevelMin" value="ERROR" /> 
                   <param name="LevelMax" value="Fatal" /> 
               </filter>

    这种方式可以配置记录级别的方位,如果只需要记录一种,则最大和最小设置一样就行了。

    3.你上面的日志输出格式我不喜欢,如何在log4net中配置我想要的日志输出格式?

    log4net的输入格式定义在每个appender的layout中。具体的有以下内置可选项:

    %m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息 
    %n(new line):换行 
    %d(datetime):输出当前语句运行的时刻 
    %r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数 
    %t(thread id):当前语句所在的线程ID 
    %p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等 
    %c(class):当前日志对象的名称,例如: 
    %f(file):输出语句所在的文件名。 
    %l(line):输出语句所在的行号。 
    %数字:表示该项的最小长度,如果不够,则用空格填充,如“%-5level”表示level的最小宽度是5个字符,如果实际长度不够5个字符则以空格填充。

    通过这些东西,你可以任意组合你喜欢的输出格式内容。

     

    4.有没有方式控制程序自动按日期记录日志信息,即每天的日志都在不同的日志文件中?

    其实这种方式对应于一种特定的记录方式:RollingFileAppender。这种方式也是基于文件记录的,不过他提供更加灵活的日志记录方式。具体说来他可以按日志文件的大小或者日志记录的时间进行自动变换日志文件。

    按每天不同的日期进行记录分类:

    <appender name="RollingLogFileAppenderEveryMin" type="log4net.Appender.RollingFileAppender">
    
    <!--日志文件名开头-->
    
    <file value="c:\logfile.txt" />
    
    <!--是否追加到文件-->
    
    <appendToFile value="true" />
    
    <!--变换的形式为日期-->
    
    <rollingStyle value="Date" />
    
    <!--日期的格式,每分钟换一个文件记录-->
    
    <datePattern value="yyyyMMdd-HHmm" />
    
    <layout type="log4net.Layout.PatternLayout">
    
    <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    
    </layout>
    
    </appender>

    按照日志文件的大小进行变换,通过这种方式可以有效降低日志文件体积膨胀的问题:

    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
    
    <!--日志文件名-->
    
    <file value="c:\log.txt"/>
    
    <!--是否在文件中追加-->
    
    <appendToFile value="true"/>
    
    <!--按照文件的大小进行变换日志文件-->
    
    <rollingStyle value="Size"/>
    
    <!--最大变换数量,如果超过这个数量则从第一个文件开始复写-->
    
    <maxSizeRollBackups value="10"/>
    
    <!--最大文件大小,支持KB,MB,GB-->
    
    <maximumFileSize value="100KB"/>
    
    <!--日志文件名是否为静态-->
    
    <staticLogFileName value="true"/>
    
    <layout type="log4net.Layout.PatternLayout">
    <!--日志输出格式-->
    <conversionPattern value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level  所在类:%c -- 行号[%l]- 信息描述:%message%newline" />
    </layout>
    
    </appender>

    最后从网上找了一段写日志的原则,感觉还是很好的:

    【写日志的原则】

    Ⅰ.在catch后,把异常写入日志.

    Ⅱ.在调用第三方控件的开始和结束处.

    Ⅲ.在连接数据库的开始结束处.

    Ⅳ.除非必要,不要在循环体中加入日志,否则一旦出问题可能导致日志暴增.

    Ⅴ.在自己认为很重要的逻辑处写入日志.

    展开全文
  • .NET c#使用Log4net记录日志

    千次阅读 2019-02-16 22:19:24
    log4net记录日志 记录一个简单的加法案例: 第一步下载log4net 下载地址:http://logging.apache.org/log4net/download_log4net.cgi 同时我们的Blend for Visual Studio 工具中也可以下载,右击解决方案,点击管理...

    log4net记录日志

    记录一个简单的加法案例:
    第一步下载log4net
    下载地址:http://logging.apache.org/log4net/download_log4net.cgi
    同时我们的Blend for Visual Studio 工具中也可以下载,右击解决方案,点击管理解决方案的NuGet 程序包,打开NuGet程序包管理器,搜索Log4net进行下载.
    第二步应用Log4net
    1.在form窗体项目中添加引用将下载的文件夹中的lod4net.all文件添加到引用中,如图
    在这里插入图片描述

    2.配置log4net,App.config,

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
     <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
      </configSections>
      <!--类库-->
      <log4net>
        <!--类:名字叫ErrorLog    证明这个类要用来记录错误信息-->
        <logger name="ErrorLog">
           <!--设置这个类的等级是最低-->
          <level value="ALL"/><!--OFF、FATAL、ERRO
    展开全文
  • Java中使用log4j记录日志

    千次阅读 2016-02-04 09:35:03
    在java中,记录日志,有很多种方式。 比如,自己实现。 自己写类,将日志数据,以io操作方式,写数据到文本文件。或者是写到数据库中。 比如,使用log4j。 log4j,这也是此文要记录的。log4j,以前在用...
  • 如何使用log4j记录日志

    千次阅读 2017-06-19 13:34:48
    如何使用log4j记录日志 一.什么是log4j  Log4J是Apache的一个开放源代码的项目。通过使用Log4J,程序员可以控制日志信息输送的目的地,包括控制台,文件,GUI组件和NT事件记录器,也可以控制每一条日志的...
  • Spring Boot配置log4j记录日志

    万次阅读 多人点赞 2019-02-18 16:57:18
    转载请注明出处:Spring Boot配置log4j记录日志 我们在老的项目框架ssh,springMVC中都使用log4j日志模块。 例如:java日志功能log4j模块的使用方法 Spring Boot框架也能很好的快速集成log4j,本篇文章记录如何在...
  • Hibernate使用Log4j日志记录

    千次阅读 2017-08-16 16:19:29
    日常我们调试程序的时候都是打印日志,但是使用日志记录能够将日志详细信息永久写入文件,更加方便我们查阅,在hibernate框架中使用 Log4j和Logback框架来支持日志记录使用log4j执行日志记录有两种方式:通过log...
  • webservice中使用log4j记录日志

    千次阅读 2017-08-17 09:57:08
    这次项目只做了webservice,然后使用log4j记录日志,按照原来的方式放好了记录日志的类,放好了log4j.properties配置文件,启动项目,测试webservice,竟然没有正常记录日志,提示: log4j:WARN No appenders could ...
  • C# 使用Log4Net记录日志(基础篇)

    万次阅读 2015-02-27 19:53:11
    最近在“伯乐在线”上看到这么篇文章《用Log4Net来记录系统的日志信息》,由于没有用到过Log4Net这个东东,就有了下面这篇文章:  第一步:下载Log4Net  下载地址:...
  • 但是,任何一个产品在投入使用后,都难 免会有错误出现,那么如何记录一些对开发者有用的错误报告呢?我们可以在单独的文本文件中将错误报告作为日志记录。错误日志记录,可以帮助开发人员或者 管理人员查看系统...
  • Java web中使用Log4j记录日志信息

    千次阅读 2016-03-20 14:58:55
    最近想记录一下Log4j的使用,抽了点时间通过收集网上的资料整理了这份博客,希望给需要用Log4j记录日志的朋友一点帮助,若有不对的地方,望指正。 Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志...
  • log日志记录

    千次阅读 2017-06-05 10:38:54
    http://www.cnblogs.com/wangwanchao/p/5310096.html在项目开发中,记录错误日志是一个很有必要功能。一是方便调试二是便于发现系统运行过程中的...2、使用log4j。log4j,这也是此文要记录的。log4j,以前在用.Net做web
  • JAVA中使用LOG4J记录日志

    千次阅读 2018-01-25 18:20:45
    原文作者: 大牛笔记 ...在java中,记录日志,有很多种方式。 比如,自己实现。 自己写类,将日志数据,以io操作方式,写数据到文本文件。或者是写到数据库中。 比如,使用log4j
  • 如果本文对你有用,请爱心点个赞,提高排名,帮助更多的人。谢谢大家!...但是,任何一个产品在投入使用后,都难 免会有错误出现,那么如何记录一些对开发者有用的错误报告呢?我们可以在单独的文本...
  • 但是,任何一个产品在投入使用后,都难 免会有错误出现,那么如何记录一些对开发者有用的错误报告呢?我们可以在单独的文本文件中将错误报告作为日志记录。错误日志记录,可以帮助开发人员或者 管理人员查看系统...
  • C#使用Log4Net记录日志

    万次阅读 2016-08-30 09:42:01
    第一步:下载Log4Net  下载地址:http://logging.apache.org/log4net/download_log4net.cgi  把下载的 log4net-1.2.11-bin-newkey解压后,如下图所示:    双击bin文件夹  
  • Javaweb项目中使用Log4j记录日志

    千次阅读 2017-04-03 18:12:56
    Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI 组件、甚至是套接口服务器、NT 的事件记录器、UNIX Syslog 守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够...
  • Java中使用Log4j记录日志

    万次阅读 2010-09-09 12:10:00
    简介:Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的...
  • Log4j记录日志使用方法

    千次阅读 2016-10-08 13:42:21
    通过使用Log4J,程序员可以控制日志信息输送的目的地,包括控制台,文件,GUI组件和NT事件记录器,也可以控制每一条日志的输出格式,或通过定义每一条日志信息的级别,更加细致地控制日志的生成过程。  二.日志及...
  • 使用springmvc,利用aop aspectj log4j 实现进入函数,退出函数的日志记录
  • Spring boot中使用log4j记录日志

    千次阅读 2016-08-25 08:56:42
    对于很多习惯使用log4j的开发者,Spring Boot依然可以很好的支持,只是需要做一些小小的配置功能。 引入log4j依赖 在创建Spring Boot工程时,我们引入了 spring-boot-starter ,其中包含了 spring-boot-starter...
  • 原文地址: http://blog.csdn.net/fafa211/article/details/2307581 通常情况下,iptables的默认政策为DROP,不匹配的...下面给出一个用来详细记录未匹配规则的数据包的iptables规则:#记录下未符合规则的udp数据
  • 我编写的代码是直接在jsp中的,业务逻辑处理也是在jsp中处理,我现在想使用日志管理,记录运行的过程及错误,但现在不知道眼怎么写,哪位大神会做呀,求指教
  • 在tomcat6中使用log4j记录日志

    千次阅读 2008-07-10 11:07:00
    tomcat6默认使用java.util.logging 来记录日志,当嵌入tomcat6的程序使用log4j时候,需要修改tomcat6也使用log4j来记录日志,这样外部程序和tomcat6的日志才能统一。修改方法如下(在tomcat6的doc中已有介绍可参考):...
  • Log4j分级别记录日志文件

    千次阅读 2017-06-28 08:41:39
    记录日志的时候通常我们都希望不同级别的日志能够分别记录在不同的日志文件中,然后有一个汇总的日志文件记录所有的日志信息,因为在大多数情况下我们可能只会关注那些Error级别的日志信息。利用log4j去记录这些...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 528,549
精华内容 211,419
关键字:

使用log记录日志