精华内容
下载资源
问答
  • 使用adb logcat命令显示Android设备上的Log日志

    万次阅读 多人点赞 2018-07-15 22:52:07
    使用adb logcat命令显示Android设备上的Log日志 有时候我们在手机程序上的日志要在其他地方调试,然后要看里面的Log日志。 本文教大家如何在不需要studio就可以查看手机程序中的Log日志。 实现这个功能的前提是...
     

    使用adb logcat命令显示Android设备上的Log日志

    有时候我们在手机程序上的日志要在其他地方调试,然后要看里面的Log日志。

    本文教大家如何在不需要studio就可以查看手机程序中的Log日志。

    实现这个功能的前提是使用adb命令,所以必须要有手机和电脑,还有安装adb,adb程序是很小的几M就可以。

    一、在cmd窗口查看手机的Log日志

    在确定连上手机后(adb device,可以看到电脑连接的手机)

    在cmd窗口中输入如下命令,就可以像Studio中的Logcat窗口中显示日志信息:

    //格式1:打印默认日志数据
    adb logcat 
    
    //格式2:需要打印日志详细时间的简单数据
    adb logcat -v time
    
    //格式3:需要打印级别为Error的信息
    adb logcat *:E
    
    //格式4:需要打印时间和级别是Error的信息
    adb logcat -v time *:E
    
    //格式5:将日志保存到电脑固定的位置,比如D:\log.txt
    adb logcat -v time >D:\log.txt
    
    
    

    这时手机日志更新什么日志,cmd窗口也会同步更新数据。

    但是这样没有过滤条件,如果Log日志很多,很难找到我们想要的信息,

    当然也可以复制cmd中的数据到一个文本中慢慢处理的,就是效率不高。

    下面介绍adb logcat中的详细参数命令以及如何才能高效的打印日志,或者把日志保存到我们指定的位置。

    二、adb logcat 详解

    adb logcat如果用过,但是具体命令又不记得

    可以输入adb logcat -help,查看一下一些简单的数据格式:

    adb help

    但是,没用过adb logcat,对于上面的指令也是不知所以然的。可以先看看后面的介绍。

    1.adn logcat日志格式

    adb logcat [<option>] ... [<filter-spec>] ...
    adb logcat [选项...] [过滤项...],
    
    

    前面那些-s,-v就是选项,后面那些V、D、I、W、E、F、S是级别过滤项,同一个tag只能有一个过滤项,多个tag可以有多个过滤项。

    先介绍过滤项,这个比较简单,后面在介绍选项

    2.按级别过滤日志

    格式:

    adb logcat <tag>[:priority]
    
    

    tag表示标签,priority输出的级别

    日志默认级别是V,如果错误日志我们选择E就可以。

    Android 的日志分为如下几个优先级(priority):
    
    V —— Verbose(最低,输出得最多)
    D —— Debug
    I —— Info
    W —— Warning
    E —— Error
    F —— Fatal
    S —— Silent(最高,啥也不输出)
    
    

    按某级别过滤日志则会将该级别及以上的日志输出。

    比如,命令:

    adb logcat *:W
    

    其实*可以是某个tag,如果没有指明,就表示所有。

    会将 Warning、Error、Fatal 和 Silent 日志输出。

    (注: 在 macOS 下需要给 :W 这样以 * 作为 tag 的参数加双引号,如 adb logcat ":W",不然会报错 no matches found: *:W。)

    3.按 tag 和级别过滤日志

    可以由多个 [:priority] 组成。

    比如,命令:

    adb logcat ActivityManager:I MyApp:D *:S
    

    表示输出 tag ActivityManager 的 Info 以上级别日志,输出 tag MyApp 的 Debug 以上级别日志,及其它 tag 的 Silent 级别日志(即屏蔽其它 tag 日志)。

    ###但是我发现自己使用tag标签命令,并没有成功过滤。并且使用tag后,后面的级别也无效了,所以tag使用*号比较保险。

    4.adb logcat选项解析

    
    --"-s"选项 : 设置输出日志*:s的标签, 只显示该标签的日志;
    --"-f"选项 : 将日志输出到文件, 默认输出到标准输出流中, -f 参数执行不成功;
    --"-r"选项 : 按照每千字节输出日志, 需要 -f 参数, 不过这个命令没有执行成功;
    --"-n"选项 : 设置日志输出的最大数目, 需要 -r 参数, 这个执行 感觉 跟 adb logcat 效果一样;
    --"-v"选项 : 设置日志的输出格式, 注意只能设置一项;
    --"-c"选项 : 清空所有的日志缓存信息;
    --"-d"选项 : 将缓存的日志输出到屏幕上, 并且不会阻塞;
    --"-t"选项 : 输出最近的几行日志, 输出完退出, 不阻塞;
    --"-g"选项 : 查看日志缓冲区信息;
    --"-B"选项 : 以二进制形式输出日志;
    
    

    上面很多选项基本是没啥作用的,比如-s相当于过滤*:s的日志,所以是没有日志输出的

    这里介绍下用得比较多的选项-v、-c:

    (1)adb logcat -v

    -v是设置日志的输出格式的

    日志支持按以下几种格式 :

    ①brief

    默认格式。格式为:

    <priority>/<tag>(<pid>): <message>
    

    示例:

    D/HeadsetStateMachine( 1785): Disconnected process message: 10, size: 0
    

    #####②process

    格式为:

    <priority>(<pid>) <message>
    

    示例:

    D( 1785) Disconnected process message: 10, size: 0  (HeadsetStateMachine)
    

    #####③tag

    格式为:

    <priority>/<tag>: <message>
    

    示例:

    D/HeadsetStateMachine: Disconnected process message: 10, size: 0
    

    #####④raw

    格式为:

    <message>
    

    示例:

    Disconnected process message: 10, size: 0
    

    #####⑤time

    格式为:

    <datetime> <priority>/<tag>(<pid>): <message>
    

    示例:

    08-28 22:39:39.974 D/HeadsetStateMachine( 1785): Disconnected process message: 10, size: 0
    

    #####⑥threadtime

    格式为:

    <datetime> <pid> <tid> <priority> <tag>: <message>
    

    示例:

    08-28 22:39:39.974  1785  1832 D HeadsetStateMachine: Disconnected process message: 10, size: 0
    

    #####⑦long

    格式为:

    [ <datetime> <pid>:<tid> <priority>/<tag> ]
    

    #####⑧
    示例:

    [ 08-28 22:39:39.974  1785: 1832 D/HeadsetStateMachine ] Disconnected process message: 10, size: 0
    

    #####⑨指定格式可与上面的过滤同时使用。比如:

    adb logcat -v long ActivityManager:I *:S
    

    对于-v选项:
    如果需要的是普通日志那么使用-v time就可以了,
    如果需要查看线程区别使用 -v threadtime就可以了,其他日志基本也是少用的。

    (2)adb logcat -c

    adb logcat -c是用来清除缓存信息的,这个没有参数

    三、把日志信息保存到电脑中

    adb logcat最后添加" > 保存文件的地址 "

    比如需要将的信息保存到电脑中使用下面的命令:

    adb logcat -v time > D:\log.txt
    
    

    你就可以在D盘中看到一个log.txt文件,并且里面有之前的日志信息

    如果没有指定具体的位置的命令

    adb logcat -v time > log.txt
    
    

    这个文件是保存在C盘的用户名的文件夹下的。

    四、使用adb logcat总结

    常用的其实就两三个命令

    
    1.adb logcat -v time
    2.adb logcat -v time > D:\log.txt
    3.adb logcat -c
    
    

    直接显示日志信息,是会显示很多日志信息的,好像是从设备最近一次开机的日志开始显示

    最好的做法的先使用-c清除之前的日志信息,再触发事件,查看最近的日志信息

    ##下面是我的一个示例:
    在MainActivity的生命周期中写几个方法打印Log,清除日志后,运行程序,查看日志文本。

    ###1.Android代码:

    package com.example.wenzhi.adblog;
    
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.util.Log;
    
    public class MainActivity extends AppCompatActivity {
        private String TAG = "adb MainActivity";
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Log.e(TAG, "onCreate");
        }
    
        @Override
        protected void onStart() {
            super.onStart();
            Log.e(TAG, "onStart");
        }
    
        @Override
        protected void onPause() {
            super.onPause();
            new Thread(new Runnable() {
                @Override
                public void run() {
                    Log.e(TAG,"onPause on over thread");
                }
            }).start();
        }
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
            Log.e(TAG, "onDestroy");
        }
    }
    

    ###2.adb命令和过程,结果

    2

    ###3.如果把日志直接显示在cmd窗口中

    33

    日志窗口是会不断增加的。。。

    到这里adb logcat的使用就已经详细介绍完毕了。

    如果想了解adb其他详细的命令:https://github.com/mzlogin/awesome-adb#%E6%9F%A5%E7%9C%8B%E6%97%A5%E5%BF%97

    其实上面都是一些简单知识,是对知识的探索学习,
    但是真正实际使用就几个命令。

    看到这么多人,浏览这个文章,
    我感觉是应该把一些真正实用的东西分享給大家,
    就是adb脚本,
    实际开发中使用adb脚本能达到事半功倍的效果。

    下面是我个人在开发过程中常用的几个关于日志的脚本,
    双击即可运行,非常方便。

    五、开发中实用的关于日志脚本

    1、清除日志缓存.bat

    adb logcat -c
    

    这个脚本是配合下面获取日志的脚本使用的,可以清除之前缓存的数据,只抓取自己当前准备获取的日志信息。

    2、获取日志文件.bat

    adb wait-for-device
    adb devices
    adb shell logcat -v threadtime >"%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%log.txt"
    pause
    
    

    这个日志在分析问题有一定的作用,哪怕是系统问题也会有日志。
    并且这里加入wait-for-device,有些情况可以定位开机就重启或者系统挂的问题。

    3、抓取Android整个日志 .bat

    获取Android整个日志文件,这个是需要root权限的

    adb pull /data/log/android_logs/
    pause
    
    

    4、获取系统最前端窗口信息.bat

    echo ####Current: %date% %time%
    set date_time="%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%"
    adb shell dumpsys window > windowInof_%date_time%.txt
    pause
    

    这个脚本可以获取当前Activity名称和apk的包名等信息

    在windowInof.txt文件,搜索关键字:mCurrentFocus

    比如UC浏览器的界面信息:

    mCurrentFocus=Window{86e35b9 u0 com.UCMobile/com.uc.browser.InnerUCMobile}

    包名:com.UCMobile
    Activity全路径:com.UCMobile/com.uc.browser.InnerUCMobile

    4、获取全量日志.bat

    下面这个日志脚本在系统开发中是非常使用的,
    把系统中重要的数据都进行了获取,
    无论系统出现什么样的问题都会有一定的参考价值。

    这个适用于系统开发,也是需要root权限的,
    因为有些文件目录普通用户是获取不到的

    
    @echo off
    ::V1.0 2021-1-18
    
    ::各个系统不同,可以根据需求添加或者删除不必要的目录下的数据获取
    
    echo 版本号:Get Android All Log V1.0
    echo.
    
    echo 当前时间是:%time% 即 %time:~0,2%点%time:~3,2%分%time:~6,2%秒%time:~9,2%厘秒@
    
    set date_time="%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%_%time:~6,2%%time:~9,2%"
    ::设置显示的文件夹名称
    set Folder="Logs_%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%_%time:~6,2%%time:~9,2%"
    echo 日志文件夹:%Folder%
    mkdir %Folder%
    
    ::获取root权限,下面pull一些隐私目录的数据需要root权限
    adb remount
    adb root
    ::创建文件夹
    mkdir %Folder%\device
    ::获取系统的所有app服务
    adb shell ps -A > %Folder%\device\ps.txt
    ::获取系统的cup等占用情况
    adb shell top -b -n 1 > %Folder%\device\top.txt
    ::获取系统的cup前十个占用最多的进程信息
    adb shell top -b -n 1 -H -m 10 -s 6 -o pid,tid,user,pr,ni,%%cpu,s,virt,res,pcy,cmd,name > %Folder%\device\top2.txt
    ::获取系统的进程内核信息
    adb shell cat /proc/cmdline > %Folder%\device\cmdline.txt
    ::获取系统的进程内存占用信息
    adb shell cat /proc/meminfo > %Folder%\device\meminfo.txt
    ::获取系统的cup信息
    adb shell cat /proc/cpuinfo > %Folder%\device\cpuinfo.txt
    ::获取系统的prop属性信息
    adb shell getprop > %Folder%\device\getprop.txt
    ::获取系统的内存大小信息
    adb shell df -h > %Folder%\device\df.txt
    
    ::获取系统的当前界面截图
    adb shell screencap /mnt/sdcard/Pictures/capture.png
    adb pull /mnt/sdcard/Pictures/capture.png %Folder%\capture.png
    
    ::获取系统的dumpsys信息,包含dumpsys package XXX的信息
    mkdir %Folder%\dumpsys
    adb shell dumpsys > %Folder%\dumpsys\dumpsys.txt
    
    ::获取系统的缓存日志
    adb shell  logcat -v threadtime -d > %Folder%\logcat.txt
    
    ::获取系统的各目录下的日志,根据不同系统进适配
    
    ::系统Android日志
    adb pull   /data/log/android_logs       %Folder%\android_logs
    ::Dalvik、状态监视调试器、C层代码以及libc的一些问题导致的错误日志
    adb pull   /data/tombstones             %Folder%\tombstones
    ::系统ANR异常日志
    adb pull   /data/anr                    %Folder%\anr
    ::系统内核日志
    adb pull   /sys/fs/pstore               %Folder%\pstore
    ::系统内核应用程序崩溃数据
    adb pull   /data/system/dropbox         %Folder%\dropbox
    ::系统??日志
    adb pull   /data/log/reliability        %Folder%\reliability_system
    adb pull   /data/vendor/log/reliability %Folder%\reliability_vendor
    ::系统settings下的system、secure、global等属性
    adb pull /data/system/users/0           %Folder%\settings
    
    ::获取系统的recovery信息
    mkdir %Folder%\recovery
    adb pull /splash2/recovery %Folder%\recovery
    
    echo.
    echo ==========log抓取完成==========
    pause
    
    

    实用的脚本太多,就不一一列举了,
    下面是自己整理的一个脚本包,需要的可以自己下载:
    https://download.csdn.net/download/wenzhi20102321/15059091

    包含主要内容有:
    44
    养成adb脚本的编写,对重复性的adb命令操作有很大作用。

    共勉 :多做有意义的是事情。

    展开全文
  • Log日志

    千次阅读 2009-05-12 23:04:00
    Log日志:主要用于记录程序运行的情况,以便于程序在部署之后的排错调试等等!也有利于将这些信息进行持久化(如果不将日志信息保存到文件或数据库,则信息便会丢失) Java Logging API需JDK1.4版本以上才能支持。...

     

    Log 日志:主要用于记录程序运行的情况,以便于程序在部署之后的排错调试等等!也有利于将这些信息进行持久化(如果不将日志信息保存到文件或数据库,则信息便会丢失)

     

    Java Logging API

    JDK1.4 版本以上才能支持。

    java.util.logging.* 包是 JDK 的日志记录 API

    基本概念

    l        logger – 用来记录日志的对象

    l        log level – 日志等级:从 FINEST SEVERE 级别

    n          请参考 JDK 文档

    l        handler – 日志输出处理器,即用来将格式化后的日志信息输出, J2SE 提供了下面的处理器

    n          StreamHandler – 将信息输出到一个 OutputStream 对象

    n          ConsoleHandler – 将信息输出到控制台

    n          FileHandler – 将信息输出到文件

    n          还有 Socket 处理器和内存处理器等

    l        Formater – 用来对日志信息进行格式化

    n          SimpleFormater – 简单的格式化输出

    n          XmlFormater – Xml 格式化输出

    l        logManager – 日志管理器,它包含有那些被命名的 logger ,以及从配置文件中读取来的一些控制信息

     

    Log4j

    基本概念

    Log4j JDK Logging 更加成熟。 Log4j 是事实上 日志记录标准。

    三大概念: logger/appender/layout

    l        logger – 使用这个对象来进行输出

    l        appender – 使用这个对象来定义输出到哪里去

    l        layout – 使用这个对象来定义输出的格式

     

    log4j 的级别 (level)

    DEBUG < INFO < WARN < ERROR < FATAL

     

    基本配置与使用

    只需要将 log4j.jar 包放到类路径中,并且保证在类路径根目录下有一个 log4j.properties 文件即可。 Log4j.properties 文件是对 log4j 的配置。

     

    log4j.properties 中,可以配置 logger/appender/layout/level 等内容。

     

    l        了解如何配置 logger

    n          log4j.rootLogger = [ 级别 ],[ 使用哪个 appender]

    n          log4j.logger.[logger 的名称 ]=[ 级别 ],[ 使用哪个 appender]

    l        了解如何配置 appender

    n          Log4j.appender.[appender 的名称 ]=[appender 类名 ]

    n          Log4j.appender.[appender 的名称 ].[appender 的属性名 ]=[appender 的属性值 ]

    u        如:对于 ConsoleAppender 来说,可以配置它的 target 属性为 System.out ,而对于 FileAppender 来说,可以配置它的 File 属性为一个文件名

    l        了解如何配置 layout

    n          Log4j.appender.[appender 的名称 ].layout=[layout 类名 ]

    n          Log4j.appender.[appender 的名称 ].layout.[layout 的属性名 ]=[layout 的属性值 ]

    n          最常见的是 PatternLayout

    u        Log4J 采用类似 C 语言中的 printf 函数的打印格式格式化日志信息,打印参数见表 1 如下:
    %m
    输出代码中指定的消息
    %p
    输出优先级,即 DEBUG INFO WARN ERROR FATAL
    %r
    输出自应用启动到输出该 log 信息耗费的毫秒数

    %c
    输出所属的类目,通常就是所在类的全名
    %t
    输出产生该日志事件的线程名
    %n
    输出一个回车换行符, Windows 平台为 “/r/n” Unix 平台为 “/n”
    %d
    输出日志时间点的日期或时间,默认格式为 ISO8601 ,也可以在其后指定格式,比如: %d{yyy MMM dd HH:mm:ss,SSS} ,输出类似: 2002 10 18 22 10 28
    921
    %l
    输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例: Testlog4.main(TestLog4.java:10)

     

    l          Log4j 文件中设置自己项目中的包下文件以什么级别显示 :

                                Log4j.logger. 包路径 = DEBUG /INFO / WARN / ERROR /FATAL

     

     

    Commons log

    通用 Log 处理,它是一个接口抽象,底层的实现可以自动替换:

     

    如果当前存在 log4j, 则使用 log4j 来实现 ( 自动按 log4j 配置要求 , 配置输出路径 )

    否则,使用 JDK LOG 来实现

    否则,使用其自身的简单实现

     

    方法 :

    l          引入 Commons-logging.jar

    l          修改 log4j.property 文件要求 , 或路径要求

    l          采用 : private static Log logger=LogFactory.getLog( .class) ;

    l        logger.debug(“”) 输出信息 ; 或者 logger.info()/logger.warn()/logger.error()

     

     

     

     

     

     

     

    Log4j 文件配置 :

     

    log4j.rootLogger= INFO, stdout, logfile

     

    log4j.appender.stdout= org.apache.log4j.ConsoleAppender

    log4j.appender.stdout.layout= org.apache.log4j.PatternLayout

    log4j.appender.stdout.layout.ConversionPattern= %d %p [%c] - %m%n

     

    log4j.appender.logfile= org.apache.log4j.RollingFileAppender

    #LOG 信息路径保存

    log4j.appender.logfile.File= ${petstore.root}/WEB-INF/petstore.log

    log4j.appender.logfile.MaxFileSize= 512KB

    # Keep three backup files.

    log4j.appender.logfile.MaxBackupIndex= 3

    # Pattern to output: date priority [category] - message

    log4j.appender.logfile.layout= org.apache.log4j.PatternLayout

    log4j.appender.logfile.layout.ConversionPattern= %d %p [%c] - %m%n

     

     

     

    --------------------------------------

    应用实例:

     


    log4j.rootLogger=DEBUG


    log4j.logger.yeepay=DEBUG,R
    log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.R.File=d://www//xxx.com//log//yeepay.log
    #log4j.appender.R.File=d:/yeepay.log
    log4j.appender.R.DatePattern = '.'yyyy-MM-dd-HH-mm
    #log4j.appender.R.MaxFileSize=1000KB
    # Keep one backup file
    #log4j.appender.R.MaxBackupIndex=10
    log4j.appender.R.layout=org.apache.log4j.PatternLayout
    log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n


    log4j.logger.userpay=DEBUG,pay
    log4j.appender.pay=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.pay.File=d://www//xxx.com//log//userpay.log
    #log4j.appender.pay.File=d:/userpay.log
    log4j.appender.pay.DatePattern = '.'yyyy-MM-dd
    log4j.appender.pay.layout=org.apache.log4j.PatternLayout
    log4j.appender.pay.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n

     

     

    ------------------------------------>

    使用时即类中调用:

    private static Logger log = Logger.getLogger("yeepay");//加载log4j配置的对像

    private static Logger log = Logger.getLogger("userpay");

    log.info("");


     

    展开全文
  • 在神经网络训练中,我们常常需要画出loss function的变化图,log日志里会显示每一次迭代的loss function的值,于是我们先把log日志保存为log.txt文档,再利用这个文档来画图。   1,先来产生一个log日志。import ...

      在神经网络训练中,我们常常需要画出loss function的变化图,log日志里会显示每一次迭代的loss function的值,于是我们先把log日志保存为log.txt文档,再利用这个文档来画图。
      
    1,先来产生一个log日志。

    import mxnet as mx
    import numpy as np
    import os
    import logging
    logging.getLogger().setLevel(logging.DEBUG)
    
    # Training data
    logging.basicConfig(filename = os.path.join(os.getcwd(), 'log.txt'), level = logging.DEBUG) # 把log日志保存为log.txt
    train_data = np.random.uniform(0, 1, [100, 2])
    train_label = np.array([train_data[i][0] + 2 * train_data[i][1] for i in range(100)])
    batch_size = 1
    num_epoch=5
    # Evaluation Data
    eval_data = np.array([[7,2],[6,10],[12,2]])
    eval_label = np.array([11,26,16])
    train_iter = mx.io.NDArrayIter(train_data,train_label, batch_size, shuffle=True,label_name='lin_reg_label')
    eval_iter = mx.io.NDArrayIter(eval_data, eval_label, batch_size, shuffle=False)
    X = mx.sym.Variable('data')
    Y = mx.sym.Variable('lin_reg_label')
    fully_connected_layer  = mx.sym.FullyConnected(data=X, name='fc1', num_hidden = 1)
    lro = mx.sym.LinearRegressionOutput(data=fully_connected_layer, label=Y, name="lro")
    model = mx.mod.Module(
        symbol = lro ,
        data_names=['data'],
        label_names = ['lin_reg_label']  # network structure
    )
    model.fit(train_iter, eval_iter,
                optimizer_params={'learning_rate':0.005, 'momentum': 0.9},
                num_epoch=20,
                eval_metric='mse',)
    model.predict(eval_iter).asnumpy()
    metric = mx.metric.MSE()
    model.score(eval_iter, metric)

      上面的代码中logging.basicConfig(filename = os.path.join(os.getcwd(), 'log.txt'), level = logging.DEBUG) # 把log日志保存为log.txt 就是把log日志保存为log.txt文件。
      
    2,log.txt文档如下。

    INFO:root:Epoch[0] Train-mse=0.470638
    INFO:root:Epoch[0] Time cost=0.047
    INFO:root:Epoch[0] Validation-mse=73.642301
    INFO:root:Epoch[1] Train-mse=0.082987
    INFO:root:Epoch[1] Time cost=0.047
    INFO:root:Epoch[1] Validation-mse=41.625072
    INFO:root:Epoch[2] Train-mse=0.044817
    INFO:root:Epoch[2] Time cost=0.063
    INFO:root:Epoch[2] Validation-mse=23.743375
    INFO:root:Epoch[3] Train-mse=0.024459
    INFO:root:Epoch[3] Time cost=0.063
    INFO:root:Epoch[3] Validation-mse=13.511120
    INFO:root:Epoch[4] Train-mse=0.013431
    INFO:root:Epoch[4] Time cost=0.063
    INFO:root:Epoch[4] Validation-mse=7.670062
    INFO:root:Epoch[5] Train-mse=0.007408
    INFO:root:Epoch[5] Time cost=0.063
    INFO:root:Epoch[5] Validation-mse=4.344374
    INFO:root:Epoch[6] Train-mse=0.004099
    INFO:root:Epoch[6] Time cost=0.063
    INFO:root:Epoch[6] Validation-mse=2.455608
    INFO:root:Epoch[7] Train-mse=0.002274
    INFO:root:Epoch[7] Time cost=0.062
    INFO:root:Epoch[7] Validation-mse=1.385449
    INFO:root:Epoch[8] Train-mse=0.001263
    INFO:root:Epoch[8] Time cost=0.063
    INFO:root:Epoch[8] Validation-mse=0.780387
    INFO:root:Epoch[9] Train-mse=0.000703
    INFO:root:Epoch[9] Time cost=0.063
    INFO:root:Epoch[9] Validation-mse=0.438943
    INFO:root:Epoch[10] Train-mse=0.000391
    INFO:root:Epoch[10] Time cost=0.125
    INFO:root:Epoch[10] Validation-mse=0.246581
    INFO:root:Epoch[11] Train-mse=0.000218
    INFO:root:Epoch[11] Time cost=0.047
    INFO:root:Epoch[11] Validation-mse=0.138368
    INFO:root:Epoch[12] Train-mse=0.000121
    INFO:root:Epoch[12] Time cost=0.047
    INFO:root:Epoch[12] Validation-mse=0.077573
    INFO:root:Epoch[13] Train-mse=0.000068
    INFO:root:Epoch[13] Time cost=0.063
    INFO:root:Epoch[13] Validation-mse=0.043454
    INFO:root:Epoch[14] Train-mse=0.000038
    INFO:root:Epoch[14] Time cost=0.063
    INFO:root:Epoch[14] Validation-mse=0.024325
    INFO:root:Epoch[15] Train-mse=0.000021
    INFO:root:Epoch[15] Time cost=0.063
    INFO:root:Epoch[15] Validation-mse=0.013609
    INFO:root:Epoch[16] Train-mse=0.000012
    INFO:root:Epoch[16] Time cost=0.063
    INFO:root:Epoch[16] Validation-mse=0.007610
    INFO:root:Epoch[17] Train-mse=0.000007
    INFO:root:Epoch[17] Time cost=0.063
    INFO:root:Epoch[17] Validation-mse=0.004253
    INFO:root:Epoch[18] Train-mse=0.000004
    INFO:root:Epoch[18] Time cost=0.063
    INFO:root:Epoch[18] Validation-mse=0.002376
    INFO:root:Epoch[19] Train-mse=0.000002
    INFO:root:Epoch[19] Time cost=0.063
    INFO:root:Epoch[19] Validation-mse=0.001327

    3,利用log.txt文件来画图。

    import re
    import matplotlib.pyplot as plt
    import numpy as np
    
    
    def main():
        file = open('log.txt','r')
        list = []
        # search the line including accuracy
        for line in file:
            m=re.search('Train-mse', line)
            if m:
                n=re.search('[0]\.[0-9]+', line) # 正则表达式
                if n is not None:
                    list.append(n.group()) # 提取精度数字
        file.close()
        plt.plot(list, 'go')
        plt.plot(list, 'r')
        plt.xlabel('count')
        plt.ylabel('accuracy')
        plt.title('Accuracy')
        plt.show()
    
    if __name__ == '__main__':
        main()
    展开全文
  • 导出 Git log 日志

    千次阅读 2019-07-12 16:09:25
    导出 Git log 日志 保存到一个文件中$ git log > log.txt 保存详细修改方法$ git log -p > log.txt 过滤某个人的修改方法$ git log --author user > log.txt 过滤某个人的详细修改方法$ git log --...

    导出 Git log 日志

    1. 保存到一个文件中
      $ git log > log.txt
      
    2. 保存详细修改方法
      $ git log -p > log.txt
      
    3. 过滤某个人的修改方法
      $ git log --author user > log.txt
      
    4. 过滤某个人的详细修改方法
      $ git log --author user -p > log.txt
      
    展开全文
  • log日志输出规范

    千次阅读 2019-08-12 15:16:48
    2、记录Log日志的基础原则 2.1、日志级别划分 2.2、日志对性能的影响 2.3、什么时候输出日志 2.3.1、系统启动参数、环境变量 2.3.2、异常捕获 2.3.3、函数获得期望之外的结果时 2.3.4、关键操作 2.4 日志...
  • log 日志查看

    千次阅读 2017-11-30 17:01:52
    log 日志查看记录 来自: http://blog.csdn.net/teamlet/article/details/38046409 tail - f 10000 catalina.out 查看日志倒数1000 条 grep "ERROR" catalina.out 关键字 ERROR 查询 grep "...
  • 全栈必备 Log日志

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

    千次阅读 2017-02-22 22:57:42
    Log日志死循环
  • C++实现log日志系统

    万次阅读 2018-04-19 14:33:10
    1.log日志的作用在软件开发周期中,不管是前台还是后台,系统一般会采用一个持久化的日志系统来记录运行情况。在代码中嵌入log代码信息,主要记录下列信息:(1)记录系统运行异常信息。(2)记录系统运行状态信息。...
  • spring boot log 日志配置

    千次阅读 2018-11-19 19:02:59
    1.在yml 文件中配置log日志路径 2.在java中引入log包调用 inif()方法写入内容 3.在yml配置的路径中生成log文件 .java @RestController public class DeptController { /** * 设置本类logger * */ ...
  • nacos access log日志占用磁盘

    千次阅读 2020-07-08 18:57:54
    nacos access log日志占用磁盘 access 日志大量打印, Issue. 主要表现是 {nacos.home}/logs/access_log.yyyy-mm-dd.log 类似格式文件名的日志大量打印,而且还不能自动清理和滚动。这个日志是 Spring Boot 提供的...
  • C++ 实现简易 log 日志系统

    万次阅读 多人点赞 2015-07-16 10:46:11
    1.log日志的作用 在软件开发周期中,不管是前台还是后台,系统一般会采用一个持久化的日志系统来记录运行情况。 在代码中嵌入log代码信息,主要记录下列信息: (1)记录系统运行异常信息。 (2)记录系统运行状态...
  • QT log日志的使用

    千次阅读 2017-07-25 17:51:12
    log日志是一个很关键的内容,在项目开发中很实用,接下来是基于QT5版本的log日志使用方法。 首先添加头文件,使用到的头文件有:#include #include #include #include 添加一个函数:void outputMessage...
  • 单片机简单Log日志封装

    万次阅读 2020-02-04 00:06:37
    1、创建log.c文件 #include "log.h" 2、创建log.h文件 #ifndef __LOG_H_ #define __LOG_H_ #include "stm32l0xx_hal.h" #include "usart.h" #include "stdio.h" #include "string.h" #define USEA_MAIN_...
  • 自定义Log工具——管理你的Log日志

    千次阅读 2017-08-19 23:23:50
    在实际开发过程中,为了方便调试,我们往往会在很多地方打印大量的Log日志来方便对可能出现的BUG进行快速查找。 一个一个删,不仅浪费时间,而且遗漏的可能性非常大,删除后也不利于后期更新维护。 下面跟大家分享一...
  • seelog 日志滚动配置

    千次阅读 2017-02-17 16:04:40
    go seelog日志滚动配置
  • LOG日志详解

    千次阅读 多人点赞 2019-06-19 20:23:47
    文章目录Log的用途记录Log的基本原则日志的级别划分日志对性能的影响什么时候输出日志系统启动参数、环境变量异常捕获处函数获得期望之外的结果时关键操作日志输出的内容什么时候使用J2SE自带的日志典型问题分析该用...
  • nginx服务器access_log日志详解

    千次阅读 2019-07-22 11:28:41
    nginx的log日志分为:access log 和 error log 其中access log 记录了哪些用户,哪些页面以及用户浏览器、ip和其他的访问信息 error log 则是记录服务器错误日志 log_format 日志格式语法: log_format name...
  • Log - Log日志入参

    千次阅读 2020-07-22 22:38:59
    选优化代码的方向,方法入参和返回结果日志首当其冲,每个方法都会有这两个日志,一大堆冗余的代码,而且什么样的打印格式都有,非常的杂乱。 `public OrderDTO getOrder(OrderVO orderVO, String name) { log.info...
  • iOS搭建Log日志系统

    千次阅读 2018-09-26 15:44:47
    CocoaLumberjack ...本文主要介绍基于CocoaLumberjack搭建iOS项目Log日志系统。 CocoaLumberjack开源地址 一、CocoaLumberjack架构 CocoaLumberjack架构 二、简单使用 1、使用CocoaPods安装CocoaLumb...
  • nginx的log日志分为access log 和 error log 其中access log 记录了哪些用户,哪些页面以及用户浏览器、ip和其他的访问信息 error log 则是记录服务器错误日志 错误日志的形式如下: ...
  • Log 日志级别

    万次阅读 多人点赞 2016-09-07 12:51:06
    log4j具有5种正常级别(Level)。: 1.static Level DEBUG :     DEBUG Level指出细粒度信息事件对调试应用程序是非常有帮助的。 2.static Level INFO     INFO level表明 消息在粗粒度级别上突出强调应用程序
  • Apache按天保存log日志设置方法

    万次阅读 多人点赞 2017-05-07 09:47:21
    Apache 设置按天生成日志的方法,主要 %Y-%m-%d,修改httpd-vhosts.conf 文件 <VirtualHost *:80> ServerAdmin server@uu.com DocumentRoot "/opt/lampp/htdocs/uu/wwwroot" ServerName tj.sugh.net ...
  • Android手机如何查看log日志

    万次阅读 2017-07-21 18:17:35
    最近做一个模块式开发需要原声和H5交互 把原声的模块打包提供H5调用 这样是可以运行的但是H5一调用在运行就会报错 你想电脑的log日志还没有只能看手机的log日志 花了我半个多小时把系统的文件都看了一遍找到了  ...
  • spring boot整合slf4j-log日志

    万次阅读 2017-07-22 16:53:26
    spring boot整合slf4j-log日志,不得不吐槽spring boot按照它默认的方式太难控制了,或许这也是他的敏捷之处(不要自定义,按我的做就行),可是我不喜欢.好了,说事 spring boot的对于一些自定义的配置,一般都会提供...
  • scrapy如何查看log日志信息?

    千次阅读 2018-11-25 19:24:50
    如何查看log日志信息? 1)了解 LOG_ENABLED 是否开启log LOG_ENCODING 编码格式 2)重要 LOG_FILE log文件路径 LOG_LEVEL CRITICAL - 严重错误(critical) ERROR - 一般错误(regular errors) WARNING - ...
  • 爬虫scrapy框架--log日志输出配置及使用

    万次阅读 热门讨论 2018-09-15 18:48:58
    因为这样可以方便开发者查看每天的日志信息,同时也可以防止单文件log日志信息堆积的越来越多,所以将当天日志信息保存到当天的日志文件中 2、配置选项有日志等级LOG_LEVEL、日志文件路径LOG_FILE,我这里设置等级...
  • log日志切割

    千次阅读 2018-09-27 11:29:29
    #此脚本用于自动分割Nginx的日志,包括access.log和error.log #每天00:00执行此脚本 将前一天的access.log重命名为access-xxxx-xx-xx.log格式,并重新打开日志文件 #Nginx日志文件所在目录 LOG_PATH=/data/...
  • 高逼格Log日志,可以导航跳转的log

    万次阅读 2018-02-26 16:38:04
    不管是Android开发还是java开发,Log日志一直是很重要的辅助调试工具,日志只能用来看吗?当然不是,还能用来导航跳转。友情提示:本文只提供提高逼格方法方式,基础知识请自行学习。不要问我原理,工具就是那么设计...
  • git不分页不分屏一次性输出全部log日志默认的git在输出log日志时候,如果日记太多一页显示不完,则会分页分屏显示log日志,这样需要用户手动按Enter键一步一步输出直到完全输出所有log日志。在有些情况下,可能需要...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 133,303
精华内容 53,321
关键字:

log日志