当前位置: 首页 > news >正文

java kotlin python 日志记录

Python中的日志记录

在Python项目中使用日志记录库,并限制日志文件大小为50MB,同时设置日志文件的滚动策略,使用logging库和logging.handlers.RotatingFileHandler。以下是具体步骤:

  1. 配置日志记录

创建一个日志配置文件,例如logging_config.py:

import logging
import logging.handlersdef setup_logging():logger = logging.getLogger()logger.setLevel(logging.DEBUG)# Console handlerconsole_handler = logging.StreamHandler()console_handler.setLevel(logging.DEBUG)console_formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')console_handler.setFormatter(console_formatter)logger.addHandler(console_handler)# Rotating file handlerfile_handler = logging.handlers.RotatingFileHandler('D:\\logs\\application.log', maxBytes=50*1024*1024, backupCount=10)file_handler.setLevel(logging.DEBUG)file_formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')file_handler.setFormatter(file_formatter)logger.addHandler(file_handler)
  1. 使用日志记录

在Python代码中导入并使用这个日志配置:

import logging
from logging_config import setup_logging# 设置日志配置
setup_logging()# 创建日志记录器
logger = logging.getLogger(__name__)def main():logger.debug("这是一个调试日志")logger.info("这是一个信息日志")logger.warning("这是一个警告日志")logger.error("这是一个错误日志")if __name__ == "__main__":main()

Kotlin中的日志记录

在Kotlin中,通常使用Logback或Log4j进行日志记录。以下是使用Logback的示例(spring boot 默认):

首先,在build.gradle`文件中添加依赖项:

dependencies {implementation "ch.qos.logback:logback-classic:1.2.3"
}

接下来,创建一个配置文件logback.xml,放在src/main/resources目录中:

<?xml version="1.0" encoding="UTF-8"?>
<configuration><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern></encoder></appender><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>logs/treevalue-robot-core.log</file><rollingPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"><maxFileSize>50MB</maxFileSize></rollingPolicy><triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"><maxFileSize>50MB</maxFileSize></triggeringPolicy><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern></encoder></appender><appender name="ROLLING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>logs/treevalue-robot-core.log</file><rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"><fileNamePattern>logs/treevalue-robot-core%i.log</fileNamePattern><minIndex>1</minIndex><maxIndex>100</maxIndex></rollingPolicy><triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"><maxFileSize>50MB</maxFileSize></triggeringPolicy><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern></encoder></appender><root level="debug"><appender-ref ref="CONSOLE"/><appender-ref ref="ROLLING_FILE"/></root></configuration>

然后,在Kotlin代码中使用日志记录:

import org.slf4j.LoggerFactoryclass App {private val logger = LoggerFactory.getLogger(App::class.java)fun run() {System.setProperty("logback.configurationFile", "src/main/resources/logback.xml")for (i in 0..5000) {logger.debug("这是一个调试日志")logger.info("这是一个信息日志")logger.warn("这是一个警告日志")logger.error("这是一个错误日志")}}
}fun main() {val app = App()app.run()
}

相关文章:

  • 再度牵手,制造升级 | 毅达科技IMS OS+通用产品集+行业套件项目正式启动!
  • 【乐吾乐3D可视化组态编辑器】用开关控制巡检车和路灯
  • 艾宾浩斯winform单词系统+mysql
  • VMware导入vmdk文件(亲测有效)
  • MATLAB数学建模——数据拟合
  • Vue2事件处理(v-on)
  • 算法:11. 盛最多水的容器
  • 再论企业上ERP和MES的抉择
  • ZCC5429 异步升压芯片
  • C语言调用so/dll动态库
  • JAVA代码审计之SQL注入代码审计
  • 【面试宝藏】Redis 常见面试题解析其二
  • CAD2022下载与安装
  • 医学领域科技查新点提炼方法!---附案例分析
  • 合并两个排序链表
  • Electron入门介绍
  • mongodb--安装和初步使用教程
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 二维平面内的碰撞检测【一】
  • 后端_ThinkPHP5
  • 每天10道Java面试题,跟我走,offer有!
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 再谈express与koa的对比
  • 在electron中实现跨域请求,无需更改服务器端设置
  • 阿里云重庆大学大数据训练营落地分享
  • ​用户画像从0到100的构建思路
  • #1015 : KMP算法
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (二)学习JVM —— 垃圾回收机制
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (转) 深度模型优化性能 调参
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • .CSS-hover 的解释
  • .describe() python_Python-Win32com-Excel
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .gitignore文件---让git自动忽略指定文件
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .Net Remoting(分离服务程序实现) - Part.3
  • .NET 表达式计算:Expression Evaluator
  • .net 获取url的方法
  • .Net 应用中使用dot trace进行性能诊断
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • .NET的微型Web框架 Nancy
  • .so文件(linux系统)
  • @data注解_一枚 架构师 也不会用的Lombok注解,相见恨晚
  • [ CTF ]【天格】战队WriteUp- 2022年第三届“网鼎杯”网络安全大赛(青龙组)
  • [ 云计算 | AWS ] 对比分析:Amazon SNS 与 SQS 消息服务的异同与选择
  • [].slice.call()将类数组转化为真正的数组
  • []我的函数库
  • [⑧ADRV902x]: Digital Pre-Distortion (DPD)学习笔记
  • [BZOJ]4817: [Sdoi2017]树点涂色
  • [C++]高精度 bign (重载运算符版本)