精华内容
下载资源
问答
  • golang简单的日志记录器。日志输出到控制台文件或ElasticSearch。简单,易于使用
  • 主要介绍了Python 写入训练日志文件控制台输出解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 本文实例讲述了Python同时向控制台文件输出日志logging的方法。分享给大家供大家参考。具体如下: python提供了非常方便的日志模块,可实现同时向控制台文件输出日志的功能。 #-*- coding:utf-8 -*- import ...
  • Python3 日志同时输出到控制台文件

    千次阅读 2019-07-02 21:47:54
    但是在开发阶段又想让日志打印到控制台,这时候可以用一个类将其封装起来,用法就跟java差不多,配置也很简单。 需要用到python内置模块 logging 和其中的函数handlers。 直接上代码: import logging from ...

    python3中想要将程序的日志打印到文件中,便于后期查看原因。但是在开发阶段又想让日志打印到控制台,这时候可以用一个类将其封装起来,用法就跟java差不多,配置也很简单。

    需要用到python内置模块 logging 和其中的函数handlers。

    直接上代码:

    import logging
    from logging import handlers
    
    
    # 日志输出
    class Logger(object):
        # 日志级别关系映射
        level_relations = {
            "debug": logging.DEBUG,
            "info": logging.INFO,
            "warning": logging.WARNING,
            "error": logging.ERROR,
            "critical": logging.CRITICAL
        }
    
        def __init__(self, filename="../log/test.log", level="info", when="D", backupCount=3, fmt="%(asctime)s - %(pathname)s[line:%(lineno)d] - %"
                                                                                                  "(levelname)s: %(message)s"):
            # 设置日志输出格式
            format_str = logging.Formatter(fmt)
            # 设置日志在控制台输出
            streamHandler = logging.StreamHandler()
            # 设置控制台中输出日志格式
            streamHandler.setFormatter(format_str)
            # 设置日志输出到文件(指定间隔时间自动生成文件的处理器  --按日生成)
            # filename:日志文件名,interval:时间间隔,when:间隔的时间单位, backupCount:备份文件个数,若超过这个数就会自动删除
            fileHandler = handlers.TimedRotatingFileHandler(filename=filename, when=when, backupCount=backupCount, encoding="utf-8")
            # 设置日志文件中的输出格式
            fileHandler.setFormatter(format_str)
            # 设置日志输出文件
            self.logger = logging.getLogger(filename)
            # 设置日志级别
            self.logger.setLevel(self.level_relations.get(level))
            # 将输出对象添加到logger中
            self.logger.addHandler(streamHandler)
            self.logger.addHandler(fileHandler)

    用法就跟java一样,创建一个Logger对象,通过对象去操作。

    log = Logger(level="debug").logger
        log.debug("debuf")
        log.info("info")
        log.warning("warning")
        log.error("error")

    可以在控制台中看到如下打印信息:

    2019-07-02 21:32:25,553 - E:/python/ryan_py/tsunagaru/logger.py[line:30] - DEBUG: debuf
    2019-07-02 21:32:25,625 - E:/python/ryan_py/tsunagaru/logger.py[line:31] - INFO: info
    2019-07-02 21:32:25,625 - E:/python/ryan_py/tsunagaru/logger.py[line:32] - WARNING: warning
    2019-07-02 21:32:25,626 - E:/python/ryan_py/tsunagaru/logger.py[line:33] - ERROR: error
    
    Process finished with exit code 0

    同时,还可以看到在父级同级的目录下的/log中创建了一个名叫test.log的文件。

    打开test.log文件,可以看到里面的内容跟控制台上的输出内容是一致的。

    2019-07-02 21:32:25,553 - E:/python/ryan_py/tsunagaru/logger.py[line:30] - DEBUG: debuf
    2019-07-02 21:32:25,625 - E:/python/ryan_py/tsunagaru/logger.py[line:31] - INFO: info
    2019-07-02 21:32:25,625 - E:/python/ryan_py/tsunagaru/logger.py[line:32] - WARNING: warning
    2019-07-02 21:32:25,626 - E:/python/ryan_py/tsunagaru/logger.py[line:33] - ERROR: error
    

     

    展开全文
  • 本工程以一个简单的log4j示例演示了log4j的使用方法 本工程编码方式:UTF-8 本工程开发工具:MyEclipse 说明:log4j详细使用方法请参考博客:http://blog.csdn.net/gaohuanjie/article/details/44077551
  • 1. 日志输出到屏幕 #!/usr/bin/env python # -*- coding: utf-8 -*- from __future__ import absolute_import from __future__ import division from __future__ import print_function import logging logging....
  • gol 是 go 的扩展记录器,可以通过单个界面记录到控制台文件和系统日志后端。 它支持多个日志记录通道,并且可以使用掩码过滤输出。 最重要的是,可以同时使用多个后端。 有关更多详细信息,请参阅 。 用法 ...
  • 默认情况下,spring boot从控制台打印出来的日志级别只有INFO及以上级别,可以配置日志级别 设置日志级别 logging.level.root=WARN 这种方式只能将日志打印在控制台上 二、Logback日志 spring boot内部使用Logback...

    一:日志:

    1、配置日志级别
    日志记录器(Logger)的行为是分等级的。如下表所示:
    分为:OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL
    默认情况下,spring boot从控制台打印出来的日志级别只有INFO及以上级别,可以配置日志级别

    设置日志级别
    logging.level.root=WARN
    

    这种方式只能将日志打印在控制台上

    二、Logback日志

    spring boot内部使用Logback作为日志实现的框架。
    Logback和log4j非常相似,如果你对log4j很熟悉,那对logback很快就会得心应手。
    logback相对于log4j的一些优点:https://blog.csdn.net/caisini_vc/article/details/48551287
    第一步:删除yml配置文件中的日志配置(因为可能会有冲突)

    mybatis-plus:
      configuration:
        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    设置日志级别,默认info
    logging:
      level: debug
    

    第二步:安装idea彩色日志插件:grep-console(就是字体颜色不一样)
    在这里插入图片描述

    第三步:在resources中创建logback-spring.xml(固定写法,直接复制)

    <?xml version="1.0" encoding="UTF-8"?>
    
    <configuration  scan="true" scanPeriod="10 seconds">
        <!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
        <!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true -->
        <!-- scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
        <!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false-->
        <contextName>logback</contextName>
        <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。 -->
        <property name="log.path" value="D:/software/edu" />
        <!-- 彩色日志 -->
        <!-- 配置格式变量:CONSOLE_LOG_PATTERN 彩色日志格式 -->
        <!-- magenta:洋红 -->
        <!-- boldMagenta:粗红-->
        <!-- cyan:青色 -->
        <!-- white:白色 -->
        <!-- magenta:洋红 -->
        <property name="CONSOLE_LOG_PATTERN"
        value="%yellow(%date{yyyy-MM-dd HH:mm:ss}) |%highlight(%-5level) |%blue(%thread) |%blue(%file:%line) |%green(%logger) |%cyan(%msg%n)"/>
        <!--输出到控制台-->
        <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
            <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
            <!-- 例如:如果此处配置了INFO级别,则后面其他位置即使配置了DEBUG级别的日志,也不会被输出 -->
            <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                <level>INFO</level>
            </filter>
            <encoder>
                <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
                <!-- 设置字符集 -->
                <charset>UTF-8</charset>
            </encoder>
        </appender>
        <!--输出到文件-->
        <!-- 时间滚动输出 level为 INFO 日志 -->
        <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <!-- 正在记录的日志文件的路径及文件名 -->
            <file>${log.path}/log_info.log</file>
            <!--日志文件输出格式-->
            <encoder>
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
                <charset>UTF-8</charset>
            </encoder>
            <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!-- 每天日志归档路径以及格式 -->
                <fileNamePattern>${log.path}/info/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>100MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
                <!--日志文件保留天数-->
                <maxHistory>15</maxHistory>
            </rollingPolicy>
            <!-- 此日志文件只记录info级别的 -->
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>INFO</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>
        </appender>
        <!-- 时间滚动输出 level为 WARN 日志 -->
        <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <!-- 正在记录的日志文件的路径及文件名 -->
            <file>${log.path}/log_warn.log</file>
            <!--日志文件输出格式-->
            <encoder>
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
                <charset>UTF-8</charset> <!-- 此处设置字符集 -->
            </encoder>
            <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>${log.path}/warn/log-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>100MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
                <!--日志文件保留天数-->
                <maxHistory>15</maxHistory>
            </rollingPolicy>
            <!-- 此日志文件只记录warn级别的 -->
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>warn</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>
        </appender>
        <!-- 时间滚动输出 level为 ERROR 日志 -->
        <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <!-- 正在记录的日志文件的路径及文件名 -->
            <file>${log.path}/log_error.log</file>
            <!--日志文件输出格式-->
            <encoder>
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
                <charset>UTF-8</charset> <!-- 此处设置字符集 -->
            </encoder>
            <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>${log.path}/error/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>100MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
                <!--日志文件保留天数-->
                <maxHistory>15</maxHistory>
            </rollingPolicy>
            <!-- 此日志文件只记录ERROR级别的 -->
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>ERROR</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>
        </appender>
        <!--
            <logger>用来设置某一个包或者具体的某一个类的日志打印级别、以及指定<appender><logger>仅有一个name属性,
            一个可选的level和一个可选的addtivity属性。
            name:用来指定受此logger约束的某一个包或者具体的某一个类。
            level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
                  如果未设置此属性,那么当前logger将会继承上级的级别。
        -->
        <!--
            使用mybatis的时候,sql语句是debug下才会打印,而这里我们只配置了info,所以想要查看sql语句的话,有以下两种操作:
            第一种把<root level="INFO">改成<root level="DEBUG">这样就会打印sql,不过这样日志那边会出现很多其他消息
            第二种就是单独给mapper下目录配置DEBUG模式,代码如下,这样配置sql语句会打印,其他还是正常DEBUG级别:
         -->
        <!--开发环境:打印控制台-->
        <springProfile name="dev">
            <!--可以输出项目中的debug日志,包括mybatis的sql日志-->
            <logger name="com.guli" level="INFO" />
            <!--
                root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性
                level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,默认是DEBUG
                可以包含零个或多个appender元素。
            -->
            <root level="INFO">
                <appender-ref ref="CONSOLE" />
                <appender-ref ref="INFO_FILE" />
                <appender-ref ref="WARN_FILE" />
                <appender-ref ref="ERROR_FILE" />
            </root>
        </springProfile>
        <!--生产环境:输出到文件-->
        <springProfile name="pro">
            <root level="INFO">
                <appender-ref ref="CONSOLE" />
                <appender-ref ref="DEBUG_FILE" />
                <appender-ref ref="INFO_FILE" />
                <appender-ref ref="ERROR_FILE" />
                <appender-ref ref="WARN_FILE" />
            </root>
        </springProfile>
    </configuration>
    

    第四步:启动(注意事项)
    在yml配置文件中一定要指明当前环境是什么环境,否则启动会报错,如下
    在这里插入图片描述
    启动成功后如下图,打印的配置文件按照指定格式输出
    在这里插入图片描述
    同时生成日志文件:
    在这里插入图片描述
    第五步:将错误日志输出到文件
    GlobalExceptionHandler.java 中
    类上添加注解

     @Slf4j
    

    异常输出语句

     log.error(e.getMessage());
    

    如下图所示:
    在这里插入图片描述

    第六步:如果想要把更完整的错误信息输出到日志文件可以使用一下工具类

    //用于错误日志输出到文件工具类,使输出的错误信息更详细
    public class ExceptionUtil {
        public static String getMessage(Exception e) {
            StringWriter sw = null;
            PrintWriter pw = null;
            try {
                sw = new StringWriter();
                pw = new PrintWriter(sw);
                // 将出错的栈信息输出到printWriter中
                e.printStackTrace(pw);
                pw.flush();
                sw.flush();
            } finally {
                if (sw != null) {
                    try {
                        sw.close();
                    } catch (IOException e1) {
                        e1.printStackTrace();
                    }
                }
                if (pw != null) {
                    pw.close();
                }
            }
            return sw.toString();
        }
    }
    
    展开全文
  • import logging import logging.handlers from pathlib import Path ... 日志类,日志分流 """ def __init__(self): log_dir = Path('log') if not log_dir.is_dir(): log_dir.mkdir(parents=True) sel.
    import logging
    import logging.handlers
    from pathlib import Path
    
    
    class Logs(object):
        """
        日志类,日志分流
        """
    
        def __init__(self):
            log_dir = Path('log')
            if not log_dir.is_dir():
                log_dir.mkdir(parents=True)
    
            self.logger = logging.getLogger(__name__)
            self.logger.setLevel(logging.DEBUG)
    
            logfilename = 'test.log'
            logfilepath = str(log_dir / logfilename)
    
            console = logging.StreamHandler()
            console.setLevel(logging.INFO)
    
            rotatfile = logging.handlers.RotatingFileHandler(logfilepath, 'a', 20971520, 2, 'utf-8')
            rotatfile.setLevel(logging.DEBUG)
    
            if not self.logger.handlers:
                self.logger.addHandler(console)
                self.logger.addHandler(rotatfile)
    
            formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
            console.setFormatter(formatter)
            rotatfile.setFormatter(formatter)
    
        def warning(self, log_message):
            self.logger.warning(log_message)
    
        def info(self, log_message):
            self.logger.info(log_message)
    
        def critical(self, log_message):
            self.logger.critical(log_message)
    
        def error(self, log_message):
            self.logger.error(log_message)
    
        def debug(self, log_message):
            self.logger.debug(log_message)
    
    
    LOG = Logs()
    
    LOG.debug('This is a loggging debug message')
    LOG.info('This is a loggging info message')
    LOG.warning('This is a loggging warning message')
    LOG.error('This is a loggging error message')
    LOG.critical('This is a loggging critical message')
    

    test.log

    2021-09-04 11:03:13,549 - DEBUG - This is a loggging debug message
    2021-09-04 11:03:13,549 - INFO - This is a loggging info message
    2021-09-04 11:03:13,550 - WARNING - This is a loggging warning message
    2021-09-04 11:03:13,550 - ERROR - This is a loggging error message
    2021-09-04 11:03:13,550 - CRITICAL - This is a loggging critical message

     command line

    C:\Users\lukaiyi\AppData\Local\Programs\Python\Python36\python.exe C:/Users/lukaiyi/insight-tool/logs.py
    2021-09-04 11:03:13,549 - INFO - This is a loggging info message
    2021-09-04 11:03:13,550 - WARNING - This is a loggging warning message
    2021-09-04 11:03:13,550 - ERROR - This is a loggging error message
    2021-09-04 11:03:13,550 - CRITICAL - This is a loggging critical message
    
    Process finished with exit code 0

    展开全文
  • 原因:可能你导入了多个日志工具jar,导致mybatis不知道使用哪种日志。修改你的mybatis配置,添加setting,指定日志类型为log4j。 解决方法: <configuration> <!-- 设置使用的日志类型 --> <...

    原因:可能你导入了多个日志工具jar,导致mybatis不知道使用哪种日志。修改你的mybatis配置,添加setting,指定日志类型为log4j。 

    解决方法:

    <configuration>
    <!-- 设置使用的日志类型 -->
    <settings>
    <setting name="logImpl" value="LOG4J"/>
    </settings>
    </configuration>

    展开全文
  • 3、SLF4J只能绑定一个唯一的日志框架,这里提示绑定了两个,并且列出了位置,只要排除掉一个即可,可以这样找到logback的引用 4、排除了logback 5、重新启动项目发现问题,good,完美解决,not found
  • 然而当信息很多的时候, 或者电脑死机了, 一种比较好的方式就是把日志保存本地. 1.使用logging模块 logging有不同的日志等级, 参考 日志等级(level) 描述 DEBUG 最详细的日志信息,典型应用场景是 问题...
  • spring boot日志输出到文件到控制台

    千次阅读 2020-04-11 15:02:01
    今天来谈一谈日志,主要是说一说springboot的日志,使用springboot框架两年了,从来没有想过日志输出怎么去控制我想要输出的错误。首先在写代码的时候,要养成记日志的习惯,这点真的很重要,因为之前吃了很多亏。...
  • 输出日志到控制台文件(Java项目)

    千次阅读 2017-10-11 15:59:45
    # 应用于控制台 log4j .appender .CONSOLE =org .apache .log 4j .ConsoleAppender log4j .appender .CONSOLE .Threshold =INFO log4j .appender .CONSOLE .Target =System .out log4j .appender .CONSOLE ....
  • SpringBoot日志输出到控制台

    千次阅读 2019-11-21 16:12:23
    在SpringBoot的yml文件中配置文件输出为 logging: level: info 然后将配置文件添加resource目录下 配置文件在这 <?xml version="1.0" encoding="UTF-8...--输出日志到控制台--> <appender name="conso...
  • 我的一个结构非常简单的小项目: springboot项目集成logback.xml
  • tomcat输出日志到文件控制台

    千次阅读 2017-02-21 10:32:57
    在windows下tomcat的启动脚本默认不像unix下的脚本那样输出应用日志logs/catalina.out,只在console中输出,如果日志刷的太快根本没法...为了把日志输出到文件,需要修改以下脚本。 1)修改startup.bat,
  • 官方下载 链接:Apache Log4j Download ...把log4j-1.2.17.jar包放进项目里,添加Java Build Path 在src同级目录创建log4j.properties log4j.rootCategory=DEBUG, CONSOLE,LOGFILE log4j.appender.CONSOLE=...
  • 这里介绍几种将控制台输出保存到文件中的方式: 1 重定向标准输出流 重定向标准输出流有两种方式,既可以在每个print方法中进行重定向,如下所示: # assume the log file is 'a.log' # for python2 print >> a.log...
  • 注意:若要输出到PostgreSQL,需要使用v2.0.3版本。 我开始安装的v2.0.8,发现sql语句中无法解析参数,修改为低版本就好了。 添加配置文件 右键项目,添加配置文件【log4net.config】; 将配置文件的属性设置为...
  • python 输出日志到文件控制台

    千次阅读 2019-07-09 14:35:19
    import logging # 第一步,创建一个logger logger = logging.getLogger() ...# 第二步,创建一个handler,用于写入日志文件 logfile = './log2.txt' fh = logging.FileHandler(logfile, mode='a'...
  • 项目中简单的记录日志输出到控制台,上线直接设置输出级别,记录关键信息 实现了一个简单的日志,使用效果如上图,记录时间,日志类型,调用位置,消息内容。直接上代码,细节看注释 import java.io....
  • 在使用Mybatis并且配置log4j文件后发现组合的sql语句并没有打印到控制台 原因:Mybatis支持的几种日志工具的使用有优先级 查看Mybatis的官方文档的logging模块,日志工具优先级如下: SLF4J Apache Commons Logging...
  • tail -f /path/logname.log
  • 原因:SLF4J只能绑定一个唯一的日志框架,这里提示绑定了两个,并且列出了位置,只要排除掉一个即可。 项目启动时控制台报错警告信息: 08-Jan-2020 15:01:07.141 警告 [RMI TCP Connection(7)-127.0.0.1] org....
  • TOMCAT控制台日志输出到指定文件

    千次阅读 2018-09-11 00:29:02
    1、修改startup.bat第42行 call '%EXECUTABLE%' start %CMD_LINE_ARGS% 为 call '%EXECUTABLE%' run %CMD_LINE_ARGS% &gt;&gt; ..\logs\catalina.txt ...控制台现在会有tomcat启动信息,业务日志不...
  • 接着读出数字到控制台输出,并统计一共产生多少个随机数,输出最大最小值。 #include<bits/stdc++.h> #include<time.h> int max(int a,int b){ if(a>b) return a; return b; } int min(int a,int ...
  • django线上环境中的日志输出是相当重要的,它可以将所有的错误、警告、调试等重要信息全部输出日志,这样便于维护和排查问题。 接下来本文会详细的介绍django logging配置,以及这些配置的含义与作用。 用到的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 122,286
精华内容 48,914
关键字:

日志能输出到控制台但是无法输出到文件