精华内容
下载资源
问答
  • 输出属性文件log4j.properties ### set log levels ###log4j.rootLogger = MAIL,error,info,CONSOLE ### Console ### log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.Target...

    先输出属性文件  log4j.properties

     ### set log levels ###
    log4j.rootLogger =   MAIL,error,info,CONSOLE
    ### Console ###
    log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender
    log4j.appender.CONSOLE.Target = System.out
    log4j.appender.Threshold=TRACE
    log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout
    log4j.appender.CONSOLE.layout.ConversionPattern =  [%d{yyyy-MM-dd HH:mm:ss}] [%p] [%c:%L] %m%n

    ### File ###
    log4j.logger.info = info
    log4j.appender.info = org.apache.log4j.DailyRollingFileAppender
    log4j.appender.info.File = log/info/info-
    log4j.appender.info.DatePattern=yyyy-MM-dd-HH-mm'.log'
    log4j.appender.info.Append = true
    log4j.appender.info.Threshold = INFO 
    log4j.appender.info.layout = org.apache.log4j.PatternLayout
    log4j.appender.info.layout.ConversionPattern = [%d{yyyy-MM-dd HH:mm:ss}] [%p] [%c:%L] %m%n

    ### Error ###
    log4j.logger.error = error
    log4j.appender.error = org.apache.log4j.DailyRollingFileAppender
    log4j.appender.error.File = log/error/error-
    log4j.appender.error.DatePattern=yyyy-MM-dd-HH-mm'.log'
    log4j.appender.error.Append = true
    log4j.appender.error.Threshold = ERROR 
    log4j.appender.error.layout = org.apache.log4j.PatternLayout
    log4j.appender.error.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

    ## mail
    log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
    log4j.appender.MAIL.Threshold=FATAL
    log4j.appender.MAIL.BufferSize=1
    log4j.appender.MAIL.From=XXX1@qq.com
    log4j.appender.MAIL.SMTPUsername=XXX1@qq.com
    log4j.appender.MAIL.SMTPHost=smtp.qq.com
    log4j.appender.MAIL.SMTPPassword=abnpugdfsgfhdfgptauwgmieja
    log4j.appender.MAIL.Subject=Log4J Message
    log4j.appender.MAIL.SMTPPort=587
    log4j.appender.MAIL.To=XXX2@qq.com
    log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
    log4j.appender.MAIL.layout.ConversionPattern=[productname][%-5p][%t] %d{yyyy-MM-dd HH\:mm\:ss\:SSS}-%-4r%c %x%L| %m%n

     

     

    主函数输出

     

    Logger log=Logger.getLogger(getlog.class);
            log.debug("输出到控制台!");
            log.info("warn!!!"); 
            log.error("输入error消息");
            //log.fatal("通过log4j发送邮件测试"); 

     

     

    结论:  之所以无法再控制台输出,主要是红色标记部分 要按照从高到底输出

    FATAL、ERROR、WARN、INFO、DEBUG、TRACE

    FATAL对应邮件,是最高级别

    Error 次之。。。。。

    所以      log4j.rootLogger =   MAIL,error,info,CONSOLE

    的顺序是Mail最前面,console最后面

     

    展开全文
  • 通过查询日志文件的方式,可以查看最新用例的执行情况,并快速定位问题使用print能够将一些错误信息输出在屏幕上,但是无法写入在文件中本篇博客介绍如何使用logging库实现日志输出logging库logging日志级别debug info ...

    前言

    现在要求将错误日志写入日志文件,通过查询日志文件的方式,可以查看最新用例的执行情况,并快速定位问题

    使用print能够将一些错误信息输出在屏幕上,但是无法写入在文件中

    本篇博客介绍如何使用logging库实现日志输出

    logging库

    logging日志级别

    debug info warning error critical

    logging简单示例

    loggin默认只输出 级别为warning error critical的日志

    logging.basicConfig(**kwargs) 控制着logging的行为,其中level=[]控制日志输出等级

    import logging

    logging.basicConfig(level=logging.DEBUG)

    logging.debug('这是一个debug级别的信息,一般用来打印一些调试信息,级别最低')

    logging.info('这是一个info级别的信息,一般用来打印一些正常的操作信息')

    logging.warning('这是一个warning级别的信息')

    logging.error('这是一个error级别的信息')

    logging.critical('这是一个critical级别的信息,一般用来打印一些致命的错误信息,等级最高')

    logging.basicConfig(**kwargs)参数

    filename:指定日志文件名

    filemode:和file函数意义相同,指定日志文件的打开模式,'w'或者'a'

    format:指定输出的格式和内容,format可以输出很多有用的信息

    '''

    formatter = logging.Formatter('%(asctime)s-%(levelname)s-%(filename)s-日志信息:%(message)s')

    %(name)s logger的名字(常用)

    %(levelno)s 数字形式的日志级别

    %levelname()s 文本形式的日志级别(常用)

    %pathname()s 调用日志输出函数模块的完整路径名,可能没有(常用)

    %filename()s 调用日志输出函数的文件名(常用)

    %(module)s 调用日志输出函数的函数名

    %(funcName)s 调用日志输出函数语句的

    %(lineno)d 调用日志输出函数语句的代码行

    %(created)f 当前时间,用unix标准表示

    %(relativeCreated)d 输出日志信息时间,自logger创建以来的毫秒数

    %(asctime)s 字符串形式的当前时间,默认格式‘2000-01-01 10:00:00,100’

    %(thread)d 线程ID,可能没有

    %(threadName)s 线程名,可能没有

    %(process)d 进程ID,可能没有

    %(message)s 用户输出的消息(常用)

    '''

    datefmt:指定时间格式,同time.strftime()

    level:设置日志级别,默认为logging.WARNNING

    stream:指定将日志的输出流,可以指定输出到sys.stderr,sys.stdout或者文件,默认输出到sys.stderr,当stream和filename同时指定时,stream被忽略

    haddler种类

    logging是通过addHandler添加主处理对象,haddler种类有:

    '''

    handler名称:位置;作用

    StreamHandler:logging.StreamHandler 日志输出到流,可以是sys.stderr,sys.stdout或者文件

    FileHandler:logging.FileHandler 日志输出到文件

    BaseRotatingHandler:logging.handlers.BaseRotatingHandler 基本的日志回滚方式

    RotatingHandler:logging.handlers.RotatingHandler 日志回滚方式,支持日志文件最大数量和日志文件回滚

    TimeRotatingHandler:logging.handlers.TimeRotatingHandler 日志回滚方式,在一定时间区域内回滚日志文件

    SocketHandler:logging.handlers.SocketHandler 远程输出日志到TCP/IP sockets

    DatagramHandler:logging.handlers.DatagramHandler 远程输出日志到UDP sockets

    SMTPHandler:logging.handlers.SMTPHandler 远程输出日志到邮件地址

    SysLogHandler:logging.handlers.SysLogHandler 日志输出到syslog

    NTEventLogHandler:logging.handlers.NTEventLogHandler 远程输出日志到Windows NT/2000/XP的事件日志

    MemoryHandler:logging.handlers.MemoryHandler 日志输出到内存中的指定buffer

    HTTPHandler:logging.handlers.HTTPHandler 通过"GET"或者"POST"远程输出到HTTP服务器

    '''

    输出日志在控制台和文本中示例

    # File : test.py

    # IDE : PyCharm

    import sys

    import logging

    logger = logging.getLogger(__name__)

    logger.setLevel(level = logging.DEBUG) # 输出等级

    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') # 输出格式

    handler = logging.FileHandler("log.txt") # 文本输出

    handler.setFormatter(formatter)

    console = logging.StreamHandler(sys.stdout) # 控制台输出

    console.setFormatter(formatter)

    logger.addHandler(handler)

    logger.addHandler(console)

    if __name__ == '__main__':

    logger.info("这是一条info级别信息")

    logger.debug("这是一条debug级别信息")

    logger.warning("这是一条warning级别信息")

    执行结果

    封装日志处理

    # File : logger_operation.py

    # IDE : PyCharm

    import os

    import sys

    import logging

    from time import strftime

    class Logger():

    def __init__(self):

    # 日志格式

    custom_format = '%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s: %(message)s'

    # 日期格式

    date_format = '%a, %d %b %Y %H:%M:%S'

    # 日志路径

    log_path = os.path.abspath('.') + '/logs/'

    self._logger = logging.getLogger() # 实例化

    self.filename = '{0}{1}.log'.format(log_path, strftime("%Y-%m-%d")) # 日志文件名

    self.formatter = logging.Formatter(fmt=custom_format, datefmt=date_format)

    self._logger.addHandler(self._get_file_handler(self.filename))

    self._logger.addHandler(self._get_console_handler())

    self._logger.setLevel(logging.INFO) # 默认等级

    def _get_file_handler(self, filename):

    '''输出到日志文件'''

    filehandler = logging.FileHandler(filename, encoding="utf-8")

    filehandler.setFormatter(self.formatter)

    return filehandler

    def _get_console_handler(self):

    '''输出到控制台'''

    console_handler = logging.StreamHandler(sys.stdout)

    console_handler.setFormatter(self.formatter)

    return console_handler

    @property

    def logger(self):

    return self._logger

    if __name__ == '__main__':

    import datetime

    logging=Logger().logger

    logging.info(u"{}:执行xxx用例".format(datetime.datetime.now()))

    总结

    本篇博客只实现了logging库的基本使用,调用起来可能会不够灵活,可以通过读取配置文件的方式去配置日志

    日志是为了方便调试和查错,在必要的函数内,都需要加上日志

    展开全文
  • 无法生成日志文件, 之前是可以的,就今天(2020年12月4日)不可以,没有修改过日志配置文件。 求大佬指点,以下是日志配置文件内容。   <code class="language-XML"><?xml version&...
  • logback系统异常日志写入文件

    千次阅读 2017-09-30 10:42:00
    控制台异常堆栈日志文件 ...但是这样就存在一个问题就是非jdk检测异常,也就是RunTime异常是无法try..catch 后输出logger.error(e.getMessage())的,每次线上出异常查日志就只有通过容器的控制台

    控制台异常堆栈日志写文件

      先上问题。使用logback 的朋友会发现一个问题。自己分好日志类型,日志也会按级别输出相应的文件。前提是我们自己调用了info(),error()等日志输出方法。但是这样就存在一个问题就是非jdk检测异常,也就是RunTime异常是无法try..catch 后输出logger.error(e.getMessage())的,每次线上出异常查日志就只有通过容器的控制台日志进行查询,这样就会加大时间成本。并且在每次的try catch都要调error会相当麻烦。

    之前是想着把控制台的输出直接写到文件,这个方向不对。因为我们是无法直接切入控制台对象的。直到发现了@ControllerAdvice 这个注解,从名字上可以看出大体意思是控制器增强。内部使用@ExceptionHandler、@InitBinder、@ModelAttribute注解的方法应用到所有的 @RequestMapping注解的方法。非常简单,不过只有当使用@ExceptionHandler最有用。我们只需要添加一个类作全局异常处理。那么所有的异常都会通过这个方法返回前台,而我们的日志也就可以在这里植入了。

    代码如下:
    @ControllerAdvice
    public class GlobalExceptionHandler {
    
        private Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);
    
        @ResponseBody
        @ExceptionHandler(Exception.class)
        public Object handleException(Exception e) {
            logger.error(ExceptionUtils.getFullStackTrace(e));  // 记录错误信息
            String msg = e.getMessage();
            if (msg == null || msg.equals("")) {
                msg = "服务器出错";
            }
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("message", msg);
            return jsonObject;
        }
    }

    下面我们模拟一个runtime异常。通过postMan调用后台方法 1 / 0的操作,


    同时我们看看生成的日志文件




    时间和pid一一对应,生成日志。这样就可以方便的查看系统异常的堆栈日志了。

    (logback日志配置不在这里细说)



    展开全文
  • logging模块是python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级,日志保存路径,日志文件回滚等日志等级:(从低到高)debug:调试代码用的,信息比较详细info输出正确的信息,按照正常的代码...

    python的logging.basicConfig函数 ,使用时粘贴到用例前,就可以打log了。

    logging模块是python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级,日志保存路径,日志文件回滚等

    日志等级:(从低到高)

    debug:调试代码用的,信息比较详细

    info:输出正确的信息,按照正常的代码运行

    warning:警告,但不影响正常运行

    error:错误问题,一些功能无法执行

    critical:严重的错误,表明程序本身可能无法继续运行

    默认等级是warning及以上的问题被抓到

    日志回滚的意思为:比如日志文件是chat.log,当chat.log达到指定的大小之后,RotatingFileHandler自动把文件改名为chat.log.1。不过,如果chat.log.1已经存在,会先把chat.log.1重命名为chat.log.2。最后重新创建 chat.log,继续输出日志信息。【这样保证了chat.log里面是最新的日志】

    日志使用:

    logging.basicConfig(filename="config.levellog",filemode="w",format="%(asctime)s-%(name)s-%(levelname)s-%(message)s",level=logging.INFO)。

    filename:指定日志文件名

    filemode:指定日志打开模式w或a

    format:指定输出的个数和内容

    level:设置日志等级。默认是logging.warning

    format输出信息:

    %(levelno)s: 打印日志级别的数值

    %(levelname)s: 打印日志级别名称

    %(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]

    %(filename)s: 打印当前执行程序名

    %(funcName)s: 打印日志的当前函数

    %(lineno)d: 打印日志的当前行号

    %(asctime)s: 打印日志的时间

    %(thread)d: 打印线程ID

    %(threadName)s: 打印线程名称

    %(process)d: 打印进程ID

    %(message)s: 打印日志信息

    展开全文
  • # 不管容器日志文件目录是挂载到目录还是卷,始终会从本容器 /host 目录下面去查找,并且映射到文件在宿主机上的实际文职。所以这个挂载配置是写死的,而且至关重要 - /:/host:ro privileged: ...
  • 无法关闭日志

    2020-11-22 14:16:27
    根本不敢写入日志文件。临时只有将其输出重定向到 /dev/null。这个是bug?还是理解错误,配置错误? <p>1438847131.333197 redsocks.c:287 process_shutdown_on_write_(...) [192.168.2.101:50608...
  • iOS下日志记录

    2018-01-29 07:18:47
    iOS开发中,一般大家都会自定义一个DLog的宏来代替NSLog,用来控制Release下的Log输出。...日志没法记录到文件,Release版本无法通过Log日志定位问题。 所以今天就推荐一个第三方库,CocoaLumberjack,完全...
  • (如果日志级别是DEBUG,那么所有级别的日志都可以打印,如果日志级别是INFO,那么DEBUG这个级别无法打印,以此类推,一般设置是INFO级别) 2、输出渠道(Handle): 控制台(StreamHandle)、文件(FileHandle) 3、日
  • .net日志组件NLog.zip

    2019-07-19 07:25:59
    Trace - 最常见的记录信息,一般用于普通输出Debug - 同样是记录信息,不过出现的频率要比Trace少一些,一般用来调试程序Info - 信息类型的消息Warn - 警告信息,一般用于比较重要的场合Error - 错误信息Fatal...
  • python的logging模块

    2018-11-20 19:36:00
    通过logging.basicConfig设置日志的显示参数,再通过logging.debug等方法输出日志,这种方法要么只能输出日志到屏幕,要么只能输出日志到一个文件中,无法同时输出到屏幕和文件。 import logging logging....
  • logging

    2021-02-04 16:59:59
    logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级、日志的保存路径、日志文件回滚等。 日志的等级(从低到高) debug:调试代码用的,信息比较信息。 info输出正确的信息,按照...
  • hibernate的hbm2ddl.auto属性,设置成update后,无法根据model更新表! 异常日志 ``` INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal....
  • go官方日志库log,功能简单,无法对于更精细的日志级别、日志文件分割以及日志分发等方面并没有提供支持;logrus日志级别分6等级;(debug、info、warn、error、fatal和panic) ;此外logrus与golang标准库日志模块...
  • -- 除按日志记录之外,还配置了日志文件不能超过2M,若超过2M,日志文件会以索引0开始,命名日志文件,例如log-error-2013-12-21.0.log --> <maxFileSize>100MB <!-- 追加方式记录日志 --> <append>...
  • 两边都无法转发,酷q机器人正常,debug日志可以看到tg消息,但是提示Connection aborted. ? <p>-使用docker构建 https://github.com/Z4HD/coolq-telegram-bot-docker -使用的稳定版 -酷q日志中...
  • 2、File:支持文件转档、文件循环保存等与文件日志输出相关功能。 3、敬请期待…… 1.3 Star & Fork 后续我还会提供更多插件。也非常欢迎大家设计、开发更多实用插件和功能,一起来完善 EasyLogger (Github|...
  • 小白学Java45:Log4J

    2021-01-24 15:56:00
    日志用于记录系统中发生的风各种时间,记录的位置常见的有:控制台,磁盘文件日志级别 TRACE: 基本不怎么用,无差别输出 DEBUG: 开发或调试中使用,看到代码运行过程中的细节 INFO: 常规,项目部署运行之后...
  • 安装失败

    2020-12-30 04:48:59
    日志输出如下: [root-ocr-3-69 build]# python tseer_deploy.py [INFO] 2018-06-12 18:53:31 Starting deploy tars... [INFO] 2018-06-12 18:53:31 Deploy tars success! [INFO] 2018-06-12 18:53:31 ...
  • 有些手机 root 后也无法通过 adb root 命令让 adbd 以 root 权限执行,比如三星的部分机型,会提示 adbd cannot run as root in production builds,此时可以先安装 adbd Insecure,然后 adb root 试试。 相应地,...
  • 在server目录下会生成一个link_name的软连接文件,链接的是director配置项的最新日志文件 show_line bool 显示行号, 默认为true,不建议修改 encode_level string LowercaseLevelEncoder:小写 ...
  • 向系统分区写入新的主引导记录可能破坏分区表并导致分区无法访问。  format  将指定的驱动器格式化为指定的文件系统。含有下列参数的 format 命令仅在使用故障恢复控制台时才可用。可在命令提示符下使用带有不同...
  • silent / info / warning / error / debug。级别越高日志输出量越大,越倾向于调试,若需要请自行开启。 <p>log-level: info <h1>clash 的 RESTful API <p>external-controller: 0.0.0.0:9090 您可以将...
  • SELECT * FROM user_info WHERE name = ?;"; //查询语句 stmt = conn.createStatement(); pstmt = conn.prepareStatement(sql); pstmt.setString(1,acc); rs = pstmt.executeQuery...
  • #如何取定文件文件集的对应关系,有时想使用某个安装文件, 但没有安装包含该文件文件集,找到文件集来安装所需文件 首先确认系统中已经安装了“bos.content_list”文件集(fileset), 如果没有安装, 请使用smitty ...
  • 由于 Web端/数据库/判题机 全部被打包在同一个镜像,无法扩展,不推荐使用此镜像做分布式判题,另外请不要在 Docker 中使用 SHM 文件系统,会由于内存空间不足无法挂载沙箱环境而导致莫名其妙的运行错误 部署后使用...
  • 应该是一个很简单的问题,下面的代码,无法实现user的删除,在日志输出中,只能看到findById()对应的Select SQL,delete函数对应的SQL看不到,应该是此句没有执行。 另外,如果直接用一个Session去做这些事的话,是...
  • When there is an error when showing the error/info/….", "hash": "a9440e4f824a372841d4de2b7e2643ee" }, "couldNotLoadOptions": { "message": "无法加载设置。&#...
  • $result) $this->show_error('无法连接数据库'.$data); return $result; } /****************************************************************** -- 函数名:get_info($num) -- 作 用:取得 MySQL 服务器...

空空如也

空空如也

1 2
收藏数 33
精华内容 13
关键字:

日志文件info无法输出error