精华内容
下载资源
问答
  • CentOS 7不收集日志 /var/log/messages

    千次阅读 2019-01-10 11:22:56
    CentOS 7不收集日志 /var/log/message背景Solution 前一直有日志生成,正常运行,日志突然不收集 ,最后一次轮替日志之后,/var/log/message, /var/log/secure等都不记录了,并且都是空文件。 背景 重启机器:...

    CentOS 7不收集日志 /var/log/messages


    前一直有日志生成,正常运行,日志突然不收集 ,最后一次轮替日志之后,/var/log/message, /var/log/secure等都不记录了,并且都是空文件。

    背景

    1. 重启机器:reboot 无效
    2. 重启日志: systemctl start rsyslog 无效
    3. 怀疑空间不足,删除/var/log/messages,重新运行rsyslog 无效
    4. 重装下rsyslog,于是yum reinstall rsyslog,重新运行rsyslog 无效

    Solution

    找到配置文件 /etc/rsyslog.conf
    修改如下:
    解注释:#$ModLoad imklog # reads kernel messages (the same are read from journald)
    修改为:$ModLoad imklog # reads kernel messages (the same are read from journald)

    增加注释:$OmitLocalLogging on
    修改为:#$OmitLocalLogging on

    增加注释:$IMJournalStateFile imjournal.state
    修改为:#$IMJournalStateFile imjournal.state

    重启日志:systemctl restart rsyslog
    tai日志:tail -f /var/log/messages 可以了

    展开全文
  • Log.io是一个日志流收集和查看工具,具有用于查看日志数据的Web界面。 它分为两个部分:一个收割机,用于监视日志中的更改;一台服务器,用于收集和查看流数据。 由于这是一个日志查看应用程序,因此单独运行本身...
  • 全栈必备 Log日志

    万次阅读 2017-06-12 08:14:59
    连自己都没想到,log日志居然如此的丰富多彩,有很多有趣的问题,不仅仅是一种全栈必备的技能,更是一种开发者的基本素养。

    Log日志,不论对开发者自身,还是对软件系统乃至产品服务都是非常重要的事情。每个开发者都接触过日志,以至于每个人对日志的了解都会有所不同。

    这里写图片描述

    什么是日志

    日志是什么呢?老码农看来,日志是带有明确时间标记的信息数据记录。

    根据不同的使用场景和视角,日志的分类也多种多样。针对生成日志的主体,如果是开发者,可以有工作或学习日志,如果是代码,可以是程序日志。根据应用程序的使用领域,可以有系统日志和应用日志,还可以进一步细分,例如消息日志,事件日志,数据库日志等等。

    记日志的方式

    对于开发者而言,随手记日志(笔记)是一个良好的工作习惯。将工作或学习中遇到的问题,解决方案,新的体会随时记下来,日积月累,就可以逐渐形成自己的知识体系。作为一个Evernote 的深度用户,老码农推荐使用Evernote,当然有道云笔记之类的其他工具同样有效。开发者自身的日志一般都是给自己看的,记录工作或学习日志的方式因人而异,适合自己就好。

    而程序代码中的日志,多用于应用中相关信息的跟踪记录,要便于其他开发者或者其他应用程序使用,一般是由日志标准的。广泛使用的日志记录标准是RFC 5424(https://tools.ietf.org/html/rfc5424)中定义的syslog。 syslog标准能够标准化系统生成,过滤,记录和分析日志消息。例如,其中定义的日志重要等级是这样的:

              0       Emergency: system is unusable
              1       Alert: action must be taken immediately
              2       Critical: critical conditions
              3       Error: error conditions
              4       Warning: warning conditions
              5       Notice: normal but significant condition
              6       Informational: informational messages
              7       Debug: debug-level messages
    

    在实际应用中,根据应用场景,有可能不完全遵从RFC 5424, 但依然可以从各种各样日志工具库中看到他们的影子,参考《全栈的技术栈设想》,对于全栈必备的几种编程语言而言,Java中的Log4j,Python 中的Logging, JavaScript 中的log4JS,遗憾的是,老码农没有在Objective-c 中使用过较好的日志库,还在用将nslog 写入文件的方式记日志,在C/C++中到是曾经用过log4CXX以及zlog。

    在python 的世界里,有着这样相对偏执的说法,“以日志调试为荣,以单步跟踪为耻”。虽然有矫枉过正的嫌疑,但充分说明了记log日志的重要性。

    常见应用中的日志

    成熟的系统中都有着自己的日志子系统,例如windows的系统日志,Linux的syslog,docker的容器日志等。这里简要回顾一些常见后端服务中的日志:Nginx日志,mysql 日志 和 tomcat 日志。

    Nginx日志主要分为两种:访问日志和错误日志。访问日志主要记录客户端访问Nginx的每一个请求,格式可以自定义。通过访问日志,可以得到用户地域来源、跳转来源、使用终端、某个URL访问量等相关信息。错误日志主要记录客户端访问Nginx出错时的日志,格式不支持自定义。通过错误日志,可以得到系统某个服务或server的性能瓶颈等。在分析nginx 日志时, 老码农目前比较喜欢的工具是goaccess.

    Tomcat下相关的日志文件有Cataline引擎的日志文件,文件名catalina.日期.log;Tomcat下内部代码丢出的日志,文件名localhost.日期.log;Tomcat下默认manager应用日志,文件名manager.日期.log ;控制台输出的日志,Linux下默认重定向到catalina.out ;通过Servlet.xml配置的Access日志,应用程序以log4j.properties:${catalina.base}/logs/probe.log重定向的日志等等。 就分析工具而言,老码农目前觉得Awstats是个不错的工具。

    MySQL有以下几种日志:

    1. 错误日志:记录启动、运行或停止时出现的问题,一般也会记录警告信息。
    2. 一般查询日志:记录建立的客户端连接和执行的语句。
    3. 慢查询日志:记录所有执行时间超过long_query_time秒的所有查询或不使用索引的查询,可以帮我们定位服务器性能问题。
    4. 二进制日志:任何引起或可能引起数据库变化的操作,主要用于复制和即时点恢复。
    5. 中继日志:从主服务器的二进制日志文件中复制而来的事件,并保存为的日志文件。
    6. 事务日志:记录InnoDB等支持事务的存储引擎执行事务时产生的日志。

    MySQL 中的日志不仅仅是跟踪信息,而且成为了业务系统的一部分。就日志分析而言,老码农最喜欢的就是percona-toolkit了,尤其是其中的慢查询分析工具pt-query-degist.

    根据应用中的日志,可以获知系统中更有价值的信息,而且可以为自己的日志系统提供资粮。

    日志分析平台

    对单应用实体的日志分析,可以有一些非常不错的工具,例如上面提到的pt,goaccess等等。但是,对于整个应用系统而言,在工作流或任务链上的每个服务组件都会产生日志,那么如何分析整个业务系统的日志呢?

    老码农觉得ELK是日志分析平台的一个上佳选择。ELK由Elasticsearch、Logstash和Kibana三部分组件组成:Elasticsearch是个开源分布式搜索引擎,它的特点是分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。Kibana 是一个开源和免费的工具,可以为 Logstash 和 ElasticSearch 提供日志分析结果的Web可视化界面,汇总、分析和搜索重要数据日志。Logstash是一个完全开源的工具,可以对各种日志进行收集、分析,并将其存储供,logstash 的工作示意图如下:
    这里写图片描述
    在ELK方案中,logstash 进行日志采集和预处理,ES 完成分布式检索,Kibaba 做最终的分析结果可视化。随之需求的变化, 基于ELK 之上还有很多变种,例如引进Kafka消息队列,增加Storm 实时分析等等,都使得基于日志的应用实现更大的价值化。

    更进一步,会形成统一日志平台,逐渐形成业务系统的一部分,例如支持数据的最终一致性等等。连自己都没想到,日志居然如此的丰富多彩,还有很多有趣的问题,例如日志的动态开关配置,日志传输中的准实时性,写日志的性能损耗等等。
    这里写图片描述
    综上,log日志的纪录和分析,不仅仅是一种全栈必备的技能,更是一种开发者的基本素养。

    展开全文
  • Android Log工具之Luffy

    2015-11-24 19:14:07
    LuffyLuffy可以在手机端实时显示你App中的logcat输出。并且具有Log等级与Tag过滤功能。另外Luffy还支持收集Log,保存Log和查看本地log功能。使用方法

    Luffy

    Luffy可以在手机端实时显示你App中的logcat输出。并且具有Log等级与Tag过滤功能。另外Luffy还支持收集Log,保存Log和查看本地log功能。

    使用方法

    1.Gradle中添加依赖

    dependencies {
        ...
        compile android studio :compile 'com.zql.android:luffy:1.1'
    }

    2.在manifest中添加如下内容:

        <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
        <uses-permission android:name="android.permission.READ_LOGS"/>
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
        <activity android:name="com.zql.android.luffy.LuffyView" >
            <intent-filter>
                <category android:name="android.intent.category.DEFAULT"/>
                <action android:name="android.intent.action.VIEW"/>
                <data android:scheme="file"/>
                <data android:scheme="content"/>
                <data android:mimeType="text/plain"/>
            </intent-filter>
        </activity>
        <service
            android:name="com.zql.android.luffy.LuffyService"
            android:enabled="true"
            android:exported="false"
               android:process=":remote">
        </service>

    3.如果设备是Android M或以上,请在MainActivity中添加如下内容用于进行权限申请(针对runtime permission):

      public static final int OVERLAY_PERMISSION_REQ_CODE  = 370 ;
    
        public void requestPermission(){
            // Here, this Activity is the current activity
            if (ContextCompat.checkSelfPermission(this,
                    Manifest.permission.WRITE_EXTERNAL_STORAGE)
                    != PackageManager.PERMISSION_GRANTED) {
    
                if (ActivityCompat.shouldShowRequestPermissionRationale(this,
                        Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
                    Toast.makeText(this,"please give me the permission",Toast.LENGTH_SHORT).show();
                } else {
                    ActivityCompat.requestPermissions(this,
                            new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
                            10);
                }
            }
        }
    
        @Override
        public void onRequestPermissionsResult(int requestCode,
                                               String permissions[], int[] grantResults) {
            switch (requestCode) {
                case 10: {
                    // If request is cancelled, the result arrays are empty.
                    if (grantResults.length > 0
                            && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    } else {
                    }
                    return;
                }
    
            }
        }
    
        public void requestDrawOverlays(){
                Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
                        Uri.parse("package:" + getPackageName()));
                startActivityForResult(intent, OVERLAY_PERMISSION_REQ_CODE);
        }
    
        @SuppressLint("NewApi")
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            Log.d("luffy","onActivityResult" + requestCode + "   " + resultCode) ;
            if (requestCode == OVERLAY_PERMISSION_REQ_CODE) {
                if (Settings.canDrawOverlays(this)) {
                    sendStartBroadcast();
                }
            }
        }

    并且在MainActivity的onCreate中添加如下方法:

    requestPermission(); //主动进行权限申请

    4.通过以下接口使用Luffy

        /**
         * 启动Luffy窗口和log收集
         * @param activity
         * @param tags 自定义tag
         */
        public static void try2StartLuffy(Activity activity,String[] tags){}
    
        /**
         * 移除Luffy窗口,但不停止log收集
         * @param activity
         */
        public static void stopLuffy(Activity activity)
    
        /**
         * 只启动Log收集,不启动窗口
         * @param activity
         */
        public static void justStartCollectLog(Activity activity){}
    
    
        /**
         * 
         * @param activity
         */
        public static void stopLuffyAndSaveLog(Activity activity)
    

    5. log文件会被保存在sdcard下的luffy文件夹内。

    6. 部分截图

    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述

    更新日志

    1.1

    -添加静默log抓取和保存功能(文件保存在sdcard/luffy下)
    -添加LuffyView查看本地log文件,支持TAG过滤
    

    1.0

    -通过Luffy窗口显示App的Log并提供等级和TAG过滤方法。
    
    展开全文
  • java Log4j2配置

    2020-05-18 09:03:12
    log4j2是log4j 1.x 的升级版,2015年5月,Apache宣布log4j1.x 停止更新。最新版为1.2.17。 log4j2参考了logback的一些优秀的设计,并且修复了一些问题,因此带来了一些重大的提升,主要有: 1、异常处理:在logback...

    Log4j2简介
    log4j2是log4j 1.x 的升级版,2015年5月,Apache宣布log4j1.x 停止更新。最新版为1.2.17。

    log4j2参考了logback的一些优秀的设计,并且修复了一些问题,因此带来了一些重大的提升,主要有:
    1、异常处理:在logback中,Appender中的异常不会被应用感知到,但是在log4j2中,提供了一些异常处理机制。
    2、性能提升:log4j2相较于log4j 1和logback都具有很明显的性能提升。
    3、自动重载配置:参考了logback的设计,提供自动刷新参数配置,可以动态的修改日志的级别而不需要重启应用。
    4、无垃圾机制,log4j2在大部分情况下,都可以使用其设计的一套无垃圾机制,避免频繁的日志收集导致的jvm gc。
    1.添加log4j2相关jar包(maven)
    复制代码

    org.apache.logging.log4j log4j-api 2.7 org.apache.logging.log4j log4j-core 2.7 复制代码

    2.log4j2.xml配置和简单说明
    复制代码

    <?xml version="1.0" encoding="UTF-8"?>
        <!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,这个也挺有用的,适合临时测试用 -->
        <!--append为TRUE表示消息增加到指定文件中,false表示消息覆盖指定的文件内容,默认值是true -->
        <File name="log" fileName="D:/logs/log4j2.log" append="false">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
        </File>
    
        <!--添加过滤器ThresholdFilter,可以有选择的输出某个级别以上的类别  onMatch="ACCEPT" onMismatch="DENY"意思是匹配就接受,否则直接拒绝  -->
        <File name="ERROR" fileName="D:/logs/error.log">
            <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="%d{yyyy.MM.dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
        </File>
    
        <!--这个会打印出所有的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档 -->
        <RollingFile name="RollingFile" fileName="D:/logs/web.log"
                     filePattern="logs/$${date:yyyy-MM}/web-%d{MM-dd-yyyy}-%i.log.gz">
            <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
            <SizeBasedTriggeringPolicy size="2MB"/>
        </RollingFile>
    </appenders>
    
    
    <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效 -->
    <loggers>
        <root level="trace">
            <appender-ref ref="RollingFile"/>
            <appender-ref ref="Console"/>
            <appender-ref ref="ERROR" />
            <appender-ref ref="log"/>
        </root>
    </loggers>
    
    复制代码

    3.测试类
    复制代码
    import org.apache.logging.log4j.LogManager;
    import org.apache.logging.log4j.Logger;

    public class log4j2Test {

    private static Logger logger= LogManager.getLogger(LogManager.ROOT_LOGGER_NAME);
    
    public static void main(String[] args) {
        for(int i=0;i<3;i++){
            // 记录trace级别的信息
            logger.trace("log4j2日志输出:This is trace message.");
            // 记录debug级别的信息
            logger.debug("log4j2日志输出:This is debug message.");
            // 记录info级别的信息
            logger.info("log4j2日志输出:This is info message.");
            // 记录error级别的信息
            logger.error("log4j2日志输出:This is error message.");
        }
    }
    

    }
    复制代码

    控制台输出结果

    日志文件输出结果

    log4j2配置说明
    log4j 2.x版本不再支持像1.x中的.properties后缀的文件配置方式,2.x版本常用.xml后缀的文件进行配置,除此之外还包含.json和.jsn配置文件

    log4j2虽然采用xml风格进行配置,依然包含三个组件,分别是 Logger(记录器)、Appender(输出目的地)、Layout(日志布局)。

    XML配置文件解析
    1、根节点Configuration有两个属性:status和monitorinterval,有两个子节点:Appenders和Loggers(表明可以定义多个Appender和Logger).
    status用来指定log4j本身的打印日志的级别.
    monitorinterval为log4j 2.x新特点自动重载配置。指定自动重新配置的监测间隔时间,单位是s,最小是5s。

    2、Appenders节点,常见的有三种子节点:Console、File、RollingFile
    Console节点用来定义输出到控制台的Appender.
    File节点用来定义输出到指定位置的文件的Appender.
    RollingFile节点用来定义超过指定大小自动删除旧的创建新的的Appender.

    通过在子节点中加入进行日志布局
    复制代码
    %c 输出所属类的全名,可写为 %c{Num} ,Num类名输出的范围 如:“com.sun.aaa.classB”,%C{2}将使日志输出输出范围为:aaa.classB
    %d 输出日志时间其格式为 可指定格式 如 %d{HH:mm:ss}等
    %l 输出日志事件发生位置,包括类目名、发生线程,在代码中的行数
    %n 换行符
    %m 输出代码指定信息,如info(“message”),输出message
    %p 输出日志的优先级,即 FATAL ,ERROR 等
    %r 输出从启动到显示该条日志信息所耗费的时间(毫秒数)
    %t 输出产生该日志事件的线程名
    复制代码

    3、Loggers节点,常见的有两种:Root和Logger.
    Root节点用来指定项目的根日志,如果没有单独指定Logger,那么就会默认使用该Root日志输出
    Logger节点用来单独指定日志的形式,比如要为指定包下的class指定不同的日志级别等。

    logback log4j log4j2 性能实测

    可见在同步日志模式下, Logback的性能是最糟糕的
    而log4j2的性能无论在同步日志模式还是异步日志模式下都是最佳的

    详细性能实测参考以下博客内容
    https://blog.souche.com/logback-log4j-log4j2shi-ce/

    展开全文
  • Mysql日志binlog、redo log、undo log 日志种类 本文仅仅针对InnoDb存储引擎进行讨论,在InnoDb存储引擎下,会有下列三种日志: binlog redo log undo log 日志详解 binlog binlog是MySQL架构中server层产生的日志...
  • Android Log分析

    千次阅读 2017-02-22 21:42:56
    Android log 分析
  • android crash log统计

    千次阅读 2017-05-04 11:18:44
    一般应用在运行时,不可避免的会发生crash。一般应用crash分为三种:未捕获的异常...对于发布的版本,则可以通过一些方式收集crash log, 这样方便开发人员分析程序崩溃原因,更好的改进代码。同时当程序崩溃时,表现出
  • Android中使用log4j2

    2021-01-05 17:52:35
    log4j2是log4j 1.x 的升级版,2015年5月,Apache宣布log4j1.x 停止更新。最新版:官网下载 log4j2参考了logback的一些优秀的设计,并且修复了一些问题,因此带来了一些重大的提升,主要有: 异常处理:在logback中...
  • Log4j2使用教程

    千次阅读 2016-09-21 14:57:14
    Log4j 2的好处就不和大家说了,如果你搜了2,说明你对他已经有一定的了解,并且想用它,所以这里直接就上手了。  1. 去官方下载log4j 2,导入jar包,基本上你只需要导入下面两个jar包就可以了(xx是乱七八糟的版本号...
  • Android logcat log丢失

    千次阅读 2020-09-08 18:24:54
    Android log机制 log丢失原理和对应方案一、log丢失对应方法1、禁用黑白名单机制2、利用黑白名单机制3、只输出4个以内的log TAG4、增大LogBuffer缓冲区大小5、选择合适的输出终端6、从log输入源头限制7、适当增大...
  • 我们知道,iOS bug定位是极看重crash log的,目前网上提供了不少crash log收集与管理服务,较有名的有Crashlytics, Flurry, 友盟,可能大部分人也就是使用这个。我这里要说的QuincyKit + KSCrash是一对开源组合,
  • log日志记录

    千次阅读 2017-06-05 10:38:54
    一是方便调试二是便于发现系统运行过程中的错误三是存储业务数据,便于后期分析日志的实现方式:1、自己写类,将日志数据,以io操作方式,写数据到文本文件。或者是写到数据库中。...log4j,以前在用.Net做web
  • Graylog安装使用

    千次阅读 2018-07-19 16:05:12
    ,由于Sidecar要控制NXlog 的启动和停止,因此必须停止NXlog的所有运行实例并解除配置默认系统服务。之后我们可以安装和设置Sidecar: $ sudo /etc/init . d/nxlog stop $ sudo update -rc . d -f nxlog ...
  • log4j2是log4j 1.x 的升级版,2015年5月,Apache宣布log4j1.x 停止更新。最新版为1.2.17。 log4j2借鉴了logback的一些优秀的设计,并且修复了一些问题,因此带来了一些重大的提升,主要有: 1、异常处理:在logback...
  • 因为公司业务需要,目前的log4j 1.x 遇到死锁,需要升级到Log4j 2.x。现在对目前的日志框架进行调研,并根据目前的现状提出升级的方法。 一引言 对于一个应用程序来说日志记录是必不可少的一部分。线上问题追踪,...
  • Android 捕获系统log

    2017-05-10 13:44:06
    Android 有时候需要捕获系统日志,因为一些原因导致有些bug不能重现,收集不到有用的信息,所以需要用命令行的方式,在发生崩溃的几分钟之内,找到相应的手机,用命令行的方式,查看系统抛出的日志。 1、打开cmd...
  • log explorer使用

    千次阅读 2007-01-24 11:17:00
    收集了一些logexplorer的使用 不断更新中打开log explorer file=>attach log file->选择服务器和登陆方式->connect->选择数据库->attach->左面对话框中browse->view log->就可以看到log记录了点击“View
  • undo log详解

    千次阅读 2017-06-15 21:18:04
    我们知道MySQL的主备同步是通过binlog在备库重放进行的,IO线程把主库binlog拉过去存入relaylog,然后SQL线程重放 relaylog 中的event,然而这种模式有一个问题就是SQL线程只有一个,在主库压力大的时候,备库单个...
  • log4j2的入门到了解

    2019-03-10 18:49:49
    log4j2的使用原因(变化介绍)log4j的结构体系log4j主要的类的类图log4j2的logger的继承规则类的相关介绍Log Levels 关于log4j2概念简介 log4j的官网地址 日志框架 引用自浅谈Log4j2日志框架及使用 日志接口...
  • log4j2使用教程

    2019-09-22 14:05:52
    log4j2是log4j 1.x 的升级版,2015年5月,Apache宣布log4j1.x 停止更新。最新版为1.2.17。 log4j2参考了logback的一些优秀的设计,并且修复了一些问题,因此带来了一些重大的提升,主要有: 1、异常处理:在...
  • Log4j 2.x 的使用

    2021-01-24 22:23:21
    在上面提到的日志框架中,以Log4j + Slf4j的使用组合最为常见,但是我们知道Log4j目前已经停止更新了。Apache推出了新的Log4j2来代替Log4j,Log4j2是对Log4j的升级,与其前身Log4j相比有了显着的改进,并提供了许多...
  • Ubuntu终端信息保存到log文件中

    千次阅读 2018-01-03 15:29:22
    script screen.log screen.log在你的当前...到指定目录(比如/home/yangyuan/log)可以用script /home/yangyuan/log/screen.log之后终端的所有信息就都会被保存到screen.log文件中,然后执行以下命令,停止保存:exit
  • 本文主要介绍 Filebeat 7.5 版本中 Log 相关的各个配置项的含义以及其应用场景。 一般情况下,我们使用 log input 的方式如下,只需要指定一系列 paths 即可。 filebeat.inputs: - type: log paths: - /var/log/...
  • log4net 配置与应用

    千次阅读 2009-06-26 13:06:00
    log4net 配置与应用 log4net...它是针对Java的log4j(Log For Java的)姊妹工具.用过log4j的都知道,它功能强大,可配置性灵活,线程安全,对日志的输出管理和级别管理方便。具体的使用方法往下看。 首先你应该下载log4net.dl
  • Android Framework常用工具及LOG调试方法

    千次阅读 2018-04-18 14:48:00
    概述 Framework开发是一项非常繁琐复杂的工作,需要阅读大量的源代码,分析及其多的LOG信息来定位错误位置。这个时候如果使用一些工具或者知道如何定位重要LOG信息,就可以使一些复杂的工作变的简单很多,使我们分析...
  • 正如最近在InfoQ上发布的,Apache软件基金会宣布Log4j版本1生命周期终结,鼓励用户升级到流行的日志框架:Log4j版本2。\\InfoQ和Apache日志服务团队的成员接触,试图找到更多关于新版本Log4j的过渡和它的特性。他们...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 40,503
精华内容 16,201
关键字:

停止收集log