np-log


Namenp-log JSON
Version 0.2.4 PyPI version JSON
download
home_pagehttps://github.com/Liu670/np_log
Summary日志管理器
upload_time2025-07-25 10:50:36
maintainerNone
docs_urlNone
author刘金林
requires_python>=3.5
licenseMIT
keywords logging custom log configuration
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # np_log 智能日志系统 使用手册

## 简介

np_log 是一个功能强大的 Python 日志系统,提供智能调用者识别、彩色终端输出、自动日志管理和多平台通知等功能。

## 安装

```bash
pip install np_log
```

## 快速开始

```python
from np_log import log, setup_logging

# 简单使用
log("Debug message")  # 默认DEBUG级别
log("Info message", "INFO")  # 指定级别
log("Error with bot", "ERROR", {"bot": True})  # 触发机器人通知

# 高级配置
logger = setup_logging(
    name="my_app",          # 自定义日志名称
    console_level="INFO",   # 控制台日志级别
    file_level="DEBUG",     # 文件日志级别
    log_max_days=30,        # 日志保留天数
    log_max_size=100        # 单个日志文件大小(MB)
)
logger.info("Custom logger message")
```

## 核心功能

### 1. 智能调用追踪
- 自动识别真实调用源文件位置
- 准确显示文件名和行号
- 跳过logging模块内部调用

### 2. 彩色终端输出
- DEBUG: 青色
- INFO: 绿色  
- WARNING: 黄色
- ERROR: 红色
- CRITICAL: 紫色

### 3. 自动日志管理
- 按日期分目录存储
- 支持日志轮转(默认50MB/文件)
- 可设置保留天数(默认7天)
- UTF-8编码保证兼容性

### 4. 机器人通知
- 支持企业微信和飞书
- 通过`.env`文件配置
- 按需发送关键日志

## 配置说明

### setup_logging 参数

| 参数 | 类型 | 默认值 | 说明 |
|------|------|--------|------|
| `name` | str | None | 自动检测调用文件 |
| `is_logfile` | bool | True | 是否启用文件日志 |
| `console_level` | str | "DEBUG" | 控制台日志级别 |
| `file_level` | str | "DEBUG" | 文件日志级别 |
| `log_max_days` | int | 7 | 日志保留天数 |
| `log_max_size` | int | 50 | 单个日志文件大小(MB) |

### 机器人配置

在项目根目录创建`.env`文件:

```ini
# 企业微信机器人(完整URL或KEY)
WECHAT_WEBHOOK_URL=your_wechat_key

# 飞书机器人 
FEISHU_WEBHOOK_URL=your_feishu_key
```

## 最佳实践

1. **项目初始化配置**:
```python
# app.py
from np_log import setup_logging
logger = setup_logging()
```

2. **模块中使用**:
```python
# module.py
from np_log import log

def my_function():
    log("Function started")
```

3. **关键错误通知**:
```python
try:
    critical_operation()
except Exception as e:
    log(f"操作失败: {str(e)}", "ERROR", {"bot": True})
```

## 问题排查

### 常见问题

1. **看不到颜色输出**:
   - 检查终端是否支持ANSI颜色
   - 确保未重定向输出到文件

2. **机器人不工作**:
   - 检查`.env`文件配置
   - 确认网络可访问
   - 检查是否设置了`{"bot": True}`

3. **行号显示不正确**:
   - 确保未使用`from np_log import *`
   - 检查是否有中间包装函数

## 版本信息

- **当前版本**:0.1.9
- **更新日期**:2025-05-20

## 联系方式

如果您在使用过程中遇到任何问题,或者有任何建议和反馈,可以通过以下方式联系我们:

- **邮箱**:2558949748@qq.com
- **GitHub**:https://github.com/Liu670/np_log

## 参与贡献

欢迎提交Issue或PR,请包含:
- 问题描述/功能建议
- 重现步骤
- 预期与实际行为

## 许可证

MIT License

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/Liu670/np_log",
    "name": "np-log",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.5",
    "maintainer_email": null,
    "keywords": "logging custom log configuration",
    "author": "\u5218\u91d1\u6797",
    "author_email": "2558949748@qq.com",
    "download_url": null,
    "platform": null,
    "description": "# np_log \u667a\u80fd\u65e5\u5fd7\u7cfb\u7edf \u4f7f\u7528\u624b\u518c\r\n\r\n## \u7b80\u4ecb\r\n\r\nnp_log \u662f\u4e00\u4e2a\u529f\u80fd\u5f3a\u5927\u7684 Python \u65e5\u5fd7\u7cfb\u7edf\uff0c\u63d0\u4f9b\u667a\u80fd\u8c03\u7528\u8005\u8bc6\u522b\u3001\u5f69\u8272\u7ec8\u7aef\u8f93\u51fa\u3001\u81ea\u52a8\u65e5\u5fd7\u7ba1\u7406\u548c\u591a\u5e73\u53f0\u901a\u77e5\u7b49\u529f\u80fd\u3002\r\n\r\n## \u5b89\u88c5\r\n\r\n```bash\r\npip install np_log\r\n```\r\n\r\n## \u5feb\u901f\u5f00\u59cb\r\n\r\n```python\r\nfrom np_log import log, setup_logging\r\n\r\n# \u7b80\u5355\u4f7f\u7528\r\nlog(\"Debug message\")  # \u9ed8\u8ba4DEBUG\u7ea7\u522b\r\nlog(\"Info message\", \"INFO\")  # \u6307\u5b9a\u7ea7\u522b\r\nlog(\"Error with bot\", \"ERROR\", {\"bot\": True})  # \u89e6\u53d1\u673a\u5668\u4eba\u901a\u77e5\r\n\r\n# \u9ad8\u7ea7\u914d\u7f6e\r\nlogger = setup_logging(\r\n    name=\"my_app\",          # \u81ea\u5b9a\u4e49\u65e5\u5fd7\u540d\u79f0\r\n    console_level=\"INFO\",   # \u63a7\u5236\u53f0\u65e5\u5fd7\u7ea7\u522b\r\n    file_level=\"DEBUG\",     # \u6587\u4ef6\u65e5\u5fd7\u7ea7\u522b\r\n    log_max_days=30,        # \u65e5\u5fd7\u4fdd\u7559\u5929\u6570\r\n    log_max_size=100        # \u5355\u4e2a\u65e5\u5fd7\u6587\u4ef6\u5927\u5c0f(MB)\r\n)\r\nlogger.info(\"Custom logger message\")\r\n```\r\n\r\n## \u6838\u5fc3\u529f\u80fd\r\n\r\n### 1. \u667a\u80fd\u8c03\u7528\u8ffd\u8e2a\r\n- \u81ea\u52a8\u8bc6\u522b\u771f\u5b9e\u8c03\u7528\u6e90\u6587\u4ef6\u4f4d\u7f6e\r\n- \u51c6\u786e\u663e\u793a\u6587\u4ef6\u540d\u548c\u884c\u53f7\r\n- \u8df3\u8fc7logging\u6a21\u5757\u5185\u90e8\u8c03\u7528\r\n\r\n### 2. \u5f69\u8272\u7ec8\u7aef\u8f93\u51fa\r\n- DEBUG: \u9752\u8272\r\n- INFO: \u7eff\u8272  \r\n- WARNING: \u9ec4\u8272\r\n- ERROR: \u7ea2\u8272\r\n- CRITICAL: \u7d2b\u8272\r\n\r\n### 3. \u81ea\u52a8\u65e5\u5fd7\u7ba1\u7406\r\n- \u6309\u65e5\u671f\u5206\u76ee\u5f55\u5b58\u50a8\r\n- \u652f\u6301\u65e5\u5fd7\u8f6e\u8f6c(\u9ed8\u8ba450MB/\u6587\u4ef6)\r\n- \u53ef\u8bbe\u7f6e\u4fdd\u7559\u5929\u6570(\u9ed8\u8ba47\u5929)\r\n- UTF-8\u7f16\u7801\u4fdd\u8bc1\u517c\u5bb9\u6027\r\n\r\n### 4. \u673a\u5668\u4eba\u901a\u77e5\r\n- \u652f\u6301\u4f01\u4e1a\u5fae\u4fe1\u548c\u98de\u4e66\r\n- \u901a\u8fc7`.env`\u6587\u4ef6\u914d\u7f6e\r\n- \u6309\u9700\u53d1\u9001\u5173\u952e\u65e5\u5fd7\r\n\r\n## \u914d\u7f6e\u8bf4\u660e\r\n\r\n### setup_logging \u53c2\u6570\r\n\r\n| \u53c2\u6570 | \u7c7b\u578b | \u9ed8\u8ba4\u503c | \u8bf4\u660e |\r\n|------|------|--------|------|\r\n| `name` | str | None | \u81ea\u52a8\u68c0\u6d4b\u8c03\u7528\u6587\u4ef6 |\r\n| `is_logfile` | bool | True | \u662f\u5426\u542f\u7528\u6587\u4ef6\u65e5\u5fd7 |\r\n| `console_level` | str | \"DEBUG\" | \u63a7\u5236\u53f0\u65e5\u5fd7\u7ea7\u522b |\r\n| `file_level` | str | \"DEBUG\" | \u6587\u4ef6\u65e5\u5fd7\u7ea7\u522b |\r\n| `log_max_days` | int | 7 | \u65e5\u5fd7\u4fdd\u7559\u5929\u6570 |\r\n| `log_max_size` | int | 50 | \u5355\u4e2a\u65e5\u5fd7\u6587\u4ef6\u5927\u5c0f(MB) |\r\n\r\n### \u673a\u5668\u4eba\u914d\u7f6e\r\n\r\n\u5728\u9879\u76ee\u6839\u76ee\u5f55\u521b\u5efa`.env`\u6587\u4ef6\uff1a\r\n\r\n```ini\r\n# \u4f01\u4e1a\u5fae\u4fe1\u673a\u5668\u4eba(\u5b8c\u6574URL\u6216KEY)\r\nWECHAT_WEBHOOK_URL=your_wechat_key\r\n\r\n# \u98de\u4e66\u673a\u5668\u4eba \r\nFEISHU_WEBHOOK_URL=your_feishu_key\r\n```\r\n\r\n## \u6700\u4f73\u5b9e\u8df5\r\n\r\n1. **\u9879\u76ee\u521d\u59cb\u5316\u914d\u7f6e**\uff1a\r\n```python\r\n# app.py\r\nfrom np_log import setup_logging\r\nlogger = setup_logging()\r\n```\r\n\r\n2. **\u6a21\u5757\u4e2d\u4f7f\u7528**\uff1a\r\n```python\r\n# module.py\r\nfrom np_log import log\r\n\r\ndef my_function():\r\n    log(\"Function started\")\r\n```\r\n\r\n3. **\u5173\u952e\u9519\u8bef\u901a\u77e5**\uff1a\r\n```python\r\ntry:\r\n    critical_operation()\r\nexcept Exception as e:\r\n    log(f\"\u64cd\u4f5c\u5931\u8d25: {str(e)}\", \"ERROR\", {\"bot\": True})\r\n```\r\n\r\n## \u95ee\u9898\u6392\u67e5\r\n\r\n### \u5e38\u89c1\u95ee\u9898\r\n\r\n1. **\u770b\u4e0d\u5230\u989c\u8272\u8f93\u51fa**\uff1a\r\n   - \u68c0\u67e5\u7ec8\u7aef\u662f\u5426\u652f\u6301ANSI\u989c\u8272\r\n   - \u786e\u4fdd\u672a\u91cd\u5b9a\u5411\u8f93\u51fa\u5230\u6587\u4ef6\r\n\r\n2. **\u673a\u5668\u4eba\u4e0d\u5de5\u4f5c**\uff1a\r\n   - \u68c0\u67e5`.env`\u6587\u4ef6\u914d\u7f6e\r\n   - \u786e\u8ba4\u7f51\u7edc\u53ef\u8bbf\u95ee\r\n   - \u68c0\u67e5\u662f\u5426\u8bbe\u7f6e\u4e86`{\"bot\": True}`\r\n\r\n3. **\u884c\u53f7\u663e\u793a\u4e0d\u6b63\u786e**\uff1a\r\n   - \u786e\u4fdd\u672a\u4f7f\u7528`from np_log import *`\r\n   - \u68c0\u67e5\u662f\u5426\u6709\u4e2d\u95f4\u5305\u88c5\u51fd\u6570\r\n\r\n## \u7248\u672c\u4fe1\u606f\r\n\r\n- **\u5f53\u524d\u7248\u672c**\uff1a0.1.9\r\n- **\u66f4\u65b0\u65e5\u671f**\uff1a2025-05-20\r\n\r\n## \u8054\u7cfb\u65b9\u5f0f\r\n\r\n\u5982\u679c\u60a8\u5728\u4f7f\u7528\u8fc7\u7a0b\u4e2d\u9047\u5230\u4efb\u4f55\u95ee\u9898\uff0c\u6216\u8005\u6709\u4efb\u4f55\u5efa\u8bae\u548c\u53cd\u9988\uff0c\u53ef\u4ee5\u901a\u8fc7\u4ee5\u4e0b\u65b9\u5f0f\u8054\u7cfb\u6211\u4eec\uff1a\r\n\r\n- **\u90ae\u7bb1**\uff1a2558949748@qq.com\r\n- **GitHub**\uff1ahttps://github.com/Liu670/np_log\r\n\r\n## \u53c2\u4e0e\u8d21\u732e\r\n\r\n\u6b22\u8fce\u63d0\u4ea4Issue\u6216PR\uff0c\u8bf7\u5305\u542b\uff1a\r\n- \u95ee\u9898\u63cf\u8ff0/\u529f\u80fd\u5efa\u8bae\r\n- \u91cd\u73b0\u6b65\u9aa4\r\n- \u9884\u671f\u4e0e\u5b9e\u9645\u884c\u4e3a\r\n\r\n## \u8bb8\u53ef\u8bc1\r\n\r\nMIT License\r\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "\u65e5\u5fd7\u7ba1\u7406\u5668",
    "version": "0.2.4",
    "project_urls": {
        "Homepage": "https://github.com/Liu670/np_log"
    },
    "split_keywords": [
        "logging",
        "custom",
        "log",
        "configuration"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c3fd6ee39d030764a3e0a2eb506cb169ff4ecb0799c3cf82131921a85b37a867",
                "md5": "76b20c89c5a91dd745000f6d39a6477e",
                "sha256": "6b74ccf6f6b840dc8800a3c2e088a91ad1727c27e687cb8554ea60276af22d2e"
            },
            "downloads": -1,
            "filename": "np_log-0.2.4-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "76b20c89c5a91dd745000f6d39a6477e",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.5",
            "size": 18628,
            "upload_time": "2025-07-25T10:50:36",
            "upload_time_iso_8601": "2025-07-25T10:50:36.698349Z",
            "url": "https://files.pythonhosted.org/packages/c3/fd/6ee39d030764a3e0a2eb506cb169ff4ecb0799c3cf82131921a85b37a867/np_log-0.2.4-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-25 10:50:36",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "Liu670",
    "github_project": "np_log",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "np-log"
}
        
Elapsed time: 0.84388s