Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
O
Oil_Level_Recognition_System
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
Oil_Level_Recognition_System
Commits
9650daf5
Commit
9650daf5
authored
Nov 30, 2025
by
Yuhaibo
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1
parent
c94177be
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
1 additions
and
299 deletions
+1
-299
DEBUGLOG_USAGE.md
rules/DEBUGLOG_USAGE.md
+0
-299
git指令集.md
rules/git指令集.md
+1
-0
No files found.
rules/DEBUGLOG_USAGE.md
deleted
100644 → 0
View file @
c94177be
# DebugLog 调试日志模块使用说明
## 功能概述
`debuglog.py`
提供了一个基于
`logging`
模块的调试日志系统,用于替代
`print()`
进行调试输出。
## 核心特性
-
✅
**单例模式**
: 全局统一的日志管理
-
✅
**双重输出**
: 同时输出到控制台和文件
-
✅
**按日期分文件**
: 每天自动创建新的日志文件
-
✅
**多级别日志**
: DEBUG, INFO, WARNING, ERROR, CRITICAL
-
✅
**详细信息**
: 文件日志包含时间、模块、文件名、行号等
-
✅
**自动清理**
: 支持清理旧日志文件
-
✅
**UTF-8编码**
: 支持中文日志
## 日志文件位置
```
D:\restructure\liquid_level_line_detection_system\database\log\debuglog\
```
## 快速开始
### 1. 基本使用
```
python
from
handlers.debuglog
import
get_logger
# 创建logger(建议使用 __name__ 作为名称)
logger
=
get_logger
(
__name__
)
# 记录不同级别的日志
logger
.
debug
(
"调试信息"
)
logger
.
info
(
"普通信息"
)
logger
.
warning
(
"警告信息"
)
logger
.
error
(
"错误信息"
)
logger
.
critical
(
"严重错误"
)
```
### 2. 在类中使用
```
python
from
handlers.debuglog
import
get_logger
class
MyClass
:
def
__init__
(
self
):
self
.
logger
=
get_logger
(
self
.
__class__
.
__name__
)
def
do_something
(
self
):
self
.
logger
.
info
(
"开始执行操作"
)
try
:
# 你的代码
result
=
self
.
process
()
self
.
logger
.
info
(
f
"操作成功,结果: {result}"
)
except
Exception
as
e
:
self
.
logger
.
error
(
f
"操作失败: {e}"
,
exc_info
=
True
)
```
### 3. 在函数中使用
```
python
from
handlers.debuglog
import
get_logger
logger
=
get_logger
(
__name__
)
def
my_function
(
param
):
logger
.
debug
(
f
"函数调用,参数: {param}"
)
# 你的代码
result
=
param
*
2
logger
.
info
(
f
"函数执行完成,返回: {result}"
)
return
result
```
## 高级用法
### 1. 只输出到文件(不显示在控制台)
```
python
from
handlers.debuglog
import
get_logger
logger
=
get_logger
(
"my_module"
,
console_output
=
False
,
# 不输出到控制台
file_output
=
True
# 只输出到文件
)
logger
.
info
(
"这条消息只会写入日志文件"
)
```
### 2. 设置日志级别
```
python
from
handlers.debuglog
import
get_logger
,
INFO
# 只记录 INFO 及以上级别的日志
logger
=
get_logger
(
"my_module"
,
level
=
INFO
)
logger
.
debug
(
"这条不会显示"
)
# DEBUG < INFO
logger
.
info
(
"这条会显示"
)
# INFO >= INFO
logger
.
warning
(
"这条会显示"
)
# WARNING > INFO
```
日志级别(从低到高):
-
`DEBUG`
(10) - 详细的调试信息
-
`INFO`
(20) - 一般信息
-
`WARNING`
(30) - 警告信息
-
`ERROR`
(40) - 错误信息
-
`CRITICAL`
(50) - 严重错误
### 3. 记录异常信息
```
python
from
handlers.debuglog
import
get_logger
logger
=
get_logger
(
__name__
)
try
:
result
=
1
/
0
except
Exception
as
e
:
# exc_info=True 会记录完整的堆栈跟踪
logger
.
error
(
f
"发生异常: {e}"
,
exc_info
=
True
)
```
### 4. 清理旧日志
```
python
from
handlers.debuglog
import
clear_old_logs
# 清理7天前的日志文件
clear_old_logs
(
days
=
7
)
# 清理30天前的日志文件
clear_old_logs
(
days
=
30
)
```
## 日志格式
### 控制台输出(简洁格式)
```
2025-11-29 15:30:45 - INFO - 这是一条信息
2025-11-29 15:30:46 - WARNING - 这是一条警告
2025-11-29 15:30:47 - ERROR - 这是一条错误
```
### 文件输出(详细格式)
```
2025-11-29 15:30:45 - my_module - INFO - [main.py:123] - 这是一条信息
2025-11-29 15:30:46 - my_module - WARNING - [main.py:124] - 这是一条警告
2025-11-29 15:30:47 - my_module - ERROR - [main.py:125] - 这是一条错误
```
## 实际应用示例
### 示例1: 在 auto_dot.py 中使用
```
python
from
handlers.debuglog
import
get_logger
class
AutoAnnotationDetector
:
def
__init__
(
self
,
model_path
:
str
=
None
,
device
:
str
=
'cuda'
):
self
.
logger
=
get_logger
(
self
.
__class__
.
__name__
)
self
.
model
=
None
self
.
model_path
=
model_path
self
.
device
=
self
.
_validate_device
(
device
)
if
model_path
:
self
.
load_model
(
model_path
)
def
load_model
(
self
,
model_path
:
str
)
->
bool
:
try
:
self
.
logger
.
info
(
f
"开始加载模型: {model_path}"
)
if
not
os
.
path
.
exists
(
model_path
):
self
.
logger
.
error
(
f
"模型文件不存在: {model_path}"
)
return
False
# 加载模型...
self
.
logger
.
info
(
f
"模型加载成功: {os.path.basename(model_path)}"
)
return
True
except
Exception
as
e
:
self
.
logger
.
error
(
f
"模型加载失败: {e}"
,
exc_info
=
True
)
return
False
def
detect
(
self
,
image
,
conf_threshold
=
0.5
,
min_area
=
100
):
self
.
logger
.
debug
(
f
"开始检测 - 置信度阈值: {conf_threshold}, 最小面积: {min_area}"
)
try
:
# 执行检测...
self
.
logger
.
info
(
f
"检测完成,共 {len(valid_masks)} 个有效mask"
)
return
result
except
Exception
as
e
:
self
.
logger
.
error
(
f
"检测失败: {e}"
,
exc_info
=
True
)
return
{
'success'
:
False
,
'error'
:
str
(
e
)}
```
### 示例2: 替代现有的 print 语句
**之前(使用 print):**
```
python
print
(
f
"🔄 正在加载模型: {model_path}"
)
print
(
f
"✅ 模型加载成功"
)
print
(
f
"❌ 模型加载失败: {e}"
)
```
**之后(使用 logger):**
```
python
logger
.
info
(
f
"正在加载模型: {model_path}"
)
logger
.
info
(
f
"模型加载成功"
)
logger
.
error
(
f
"模型加载失败: {e}"
,
exc_info
=
True
)
```
### 示例3: 在测试函数中使用
```
python
from
handlers.debuglog
import
get_logger
def
test_auto_annotation
():
logger
=
get_logger
(
"test_auto_annotation"
)
logger
.
info
(
"="
*
80
)
logger
.
info
(
"自动标注功能测试"
)
logger
.
info
(
"="
*
80
)
# 配置参数
model_path
=
r"D:\...\best.dat"
logger
.
debug
(
f
"模型路径: {model_path}"
)
# 检查文件
if
not
os
.
path
.
exists
(
model_path
):
logger
.
error
(
f
"模型文件不存在: {model_path}"
)
return
# 创建检测器
logger
.
info
(
"初始化自动标注检测器..."
)
detector
=
AutoAnnotationDetector
(
model_path
=
model_path
,
device
=
'cuda'
)
# 执行检测
logger
.
info
(
"开始执行检测..."
)
detection_result
=
detector
.
detect
(
image
,
conf_threshold
=
0.5
,
min_area
=
100
)
if
detection_result
.
get
(
'success'
):
logger
.
info
(
"检测成功"
)
else
:
logger
.
error
(
f
"检测失败: {detection_result.get('error')}"
)
```
## 最佳实践
1.
**使用 `__name__` 作为 logger 名称**
```
python
logger
=
get_logger
(
__name__
)
``
`
2.
**
在类中创建实例变量
**
``
`
python
def
__init__
(
self
):
self
.
logger
=
get_logger
(
self
.
__class__
.
__name__
)
``
`
3.
**
记录异常时使用
`exc_info=True`
**
``
`
python
except
Exception
as
e
:
logger
.
error
(
f
"错误: {e}"
,
exc_info
=
True
)
``
`
4.
**
根据重要性选择合适的日志级别
**
-
`DEBUG`
:
详细的调试信息(开发时使用)
-
`INFO`
:
正常的操作信息
-
`WARNING`
:
警告但不影响运行
-
`ERROR`
:
错误但程序可以继续
-
`CRITICAL`
:
严重错误,程序可能无法继续
5.
**
定期清理旧日志
**
``
`
python
# 在程序启动时清理旧日志
from
handlers.debuglog
import
clear_old_logs
clear_old_logs
(
days
=
7
)
``
`
## 测试
运行测试代码:
```
bash
python handlers/debuglog.py
```
这会执行5个测试用例,展示各种使用方式。
## 注意事项
1.
日志文件按日期命名,格式为:
`{logger_name}_{YYYYMMDD}.log`
2.
日志文件使用 UTF-8 编码,支持中文
3.
同一个 logger 名称会复用已创建的 logger 实例
4.
文件日志会追加写入,不会覆盖
5.
建议在生产环境中将日志级别设置为
`INFO`
或更高
rules/git指令集.md
0 → 100644
View file @
9650daf5
++ "b/rules/git\346\214\207\344\273\244\351\233\206.md"
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment