温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Logger 如何配置

发布时间:2026-07-17 11:37:45 来源:亿速云 阅读:103 作者:小樊 栏目:编程语言

“Logger 如何配置”这个问题比较通用,不同语言/框架差异很大。下面我按 最常见的几种场景 给你说明,你可以直接跳到你用的那一部分。


一、Python logging 配置(最常见)

✅ 1. 基础配置(快速上手)

import logging

logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s [%(levelname)s] %(name)s - %(message)s",
    datefmt="%Y-%m-%d %H:%M:%S"
)

logger = logging.getLogger(__name__)
logger.info("这是一条日志")

✅ 2. 输出到文件 + 控制台

import logging

logger = logging.getLogger("my_logger")
logger.setLevel(logging.DEBUG)

# 文件 handler
fh = logging.FileHandler("app.log", encoding="utf-8")
fh.setLevel(logging.DEBUG)

# 控制台 handler
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)

# 格式化
fmt = logging.Formatter(
    "%(asctime)s [%(levelname)s] %(filename)s:%(lineno)d - %(message)s"
)
fh.setFormatter(fmt)
ch.setFormatter(fmt)

logger.addHandler(fh)
logger.addHandler(ch)

✅ 3. 使用 dictConfig(推荐生产环境)

import logging.config

LOGGING_CONFIG = {
    "version": 1,
    "disable_existing_loggers": False,
    "formatters": {
        "standard": {
            "format": "%(asctime)s [%(levelname)s] %(name)s - %(message)s"
        }
    },
    "handlers": {
        "console": {
            "class": "logging.StreamHandler",
            "level": "INFO",
            "formatter": "standard"
        },
        "file": {
            "class": "logging.handlers.RotatingFileHandler",
            "filename": "app.log",
            "maxBytes": 10 * 1024 * 1024,
            "backupCount": 5,
            "formatter": "standard",
            "encoding": "utf-8"
        }
    },
    "root": {
        "level": "DEBUG",
        "handlers": ["console", "file"]
    }
}

logging.config.dictConfig(LOGGING_CONFIG)

二、Java Logback 配置(Spring Boot 常用)

✅ 1. application.yml

logging:
  level:
    root: INFO
    com.example: DEBUG
  file:
    name: logs/app.log
  pattern:
    console: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger - %msg%n"

✅ 2. logback-spring.xml(进阶)

<configuration>
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>logs/app.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>logs/app.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>7</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="FILE"/>
    </root>
</configuration>

三、Node.js(Winston)

const winston = require('winston');

const logger = winston.createLogger({
  level: 'info',
  format: winston.format.combine(
    winston.format.timestamp(),
    winston.format.json()
  ),
  transports: [
    new winston.transports.File({ filename: 'error.log', level: 'error' }),
    new winston.transports.File({ filename: 'combined.log' }),
    new winston.transports.Console()
  ]
});

logger.info('Hello logger');

四、通用 Logger 配置原则(重要)

推荐做法

  • 不同环境不同级别(dev=DEBUG,prod=INFO/WARN)
  • 日志按 时间 / 大小滚动
  • 区分 console / file / remote
  • 关键日志包含:
    • 时间
    • 级别
    • 模块名
    • 请求 ID / trace ID

避免

  • 打印敏感信息(密码、token)
  • 生产环境输出大量 DEBUG
  • 重复创建 logger 实例

五、如果你愿意,我可以更具体帮你

你可以直接告诉我:

  1. 语言 / 框架(Python / Java / Spring Boot / Node / Go / …)
  2. 使用场景(本地调试 / 服务器 / Docker / 微服务)
  3. 需求(只输出到文件?按天切分?JSON 格式?ELK?)

我可以给你一份 可直接用的完整配置

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI