mlogs 0.3.5
loguru packaging log tools
License: Apache 2.0

### 简介

loguru 基础上封装的 开箱即用的 python 日志 工具包   
loguru https://loguru.readthedocs.io/en/stable/overview.html#installation   
notifiers https://notifiers.readthedocs.io/en/latest/usage.html#provider-schema

目前为 开发版本，未经过严格测试，请勿使用在生产环境。

### 使用方法

```shell  
pip install mlogs
```

```python
from mlogs import MLogger

L = MLogger()
L.info("nice")

# trace_id 可以用来 链路追踪， topic 用于分类
L.warning("nice", trace_id="12312321", topic="model:task")
L.warning({"msg": "nice", "gg_monkey": "bugs"}, trace_id="12312321", topic="model:task")

# MLogger 会同时输出日志到 terminal 日志文件
# FileLogger   仅输出日志到 日志文件，按照日志级别生成 不同的日志文件
# StdoutLogger 仅输出日志到 terminal
# AdaptHistoryLogger 为了兼容历史项目日志


# 配置邮件接收 （release 0.1.3）
"""
email 发送邮件，使用的是python 原生库 smtplib.SMTP
"""
from mlogs import StdoutLogger

alerts = {
    "alerts_type": "email",
    "params": {
        "username": "username",
        "password": "password",
        "host": "smtp.exmail.qq.com",  # 邮箱服务器地址
        "port": 465,  # 邮箱服务器端口
        "from": "yourname@cc.com",  # 邮件发送人
        "to": [
            "yourname@cc.com",  # 邮件接收人
        ],
        "login": True,
        "ssl": True,  # 绝大多数邮箱，均开启了ssl服务，所以需要配置
    },
}

L = StdoutLogger(alerts=alerts)
L.error('nice')

# 添加 webhook，此时 会同时发送 邮件和 webhook
alerts = [
    {
        "alerts_type": "email",
        "params": {
            "username": "username",
            "password": "password",
            "host": "smtp.exmail.qq.com",  # 邮箱服务器地址
            "port": 465,  # 邮箱服务器端口
            "from": "yourname@cc.com",  # 邮件发送人
            "to": [
                "yourname@cc.com",  # 邮件接收人
            ],
            "login": True,
            "ssl": True,  # 绝大多数邮箱，均开启了ssl服务，所以需要配置
        },
    },
    {
        {
            "alerts_type": "feishu",
            "params": {
                "webhook_url": "https://open.feishu.cn/open-apis/bot/v2/hook/your_id",
                'msg_type': 'text',
                'content': {
                    'title': "from mlogs feishu",
                    'text': "this is log feishu test"
                }
            }
        }
    }
]

L = StdoutLogger(alerts=alerts)
L.error('nice! this is a test')

# default topic （release 0.2.0）
"""
当一个项目里面包含多个服务时，需要使用topic来区分，那么可以在日志初始化时，统一设置default topic。
"""
from mlogs import StdoutLogger

L1 = StdoutLogger(default_topic="1")
L2 = StdoutLogger(default_topic="2")
L3 = StdoutLogger(default_topic="3")

L1.info('nice')
L2.info('nice')
L3.info('nice', topic="333")

```

### 一些介绍

1.  FileLogger 默认按照 50 MB分割文件，最多储存 10 个文件，默认不压缩日志。
2.  日志级别默认为DEBUG，可以自定义设置，也可以使用环境变量 export DEPLOYMENT=PRODUCTION，设置日志级别为 INFO

### 遗留问题

1. 暂时使用自己修改过的 notifiers，支持飞书webhook。如果有幸 通过原始库合并，则会转到 原始库
2. 如果 原本环境中 包含 notifiers，需要先卸载，否则会出现找不到 feishu。
3. 原本的 notifiers 库，可以做一个钩子函数，支持添加外部 组件，这样就能很快捷的添加适合的组件了。

### 注意⚠️

1. 打包时，会把 tests 文件夹下内容拷贝到资源包。所以包含敏感信息的测试文件，请放入 secret_tests 下。
2. 目前测试范仅仅 覆盖 mac ubuntu

### 版本更新内容
    
    0.3.5 新增 AdaptHistoryLogger 用来支持历史日志格式。
    0.3.4 移除 默认设置 日志导出 支持 numpy 格式数据，现在是可选，通过 json_encoder参数 支持自定义json 解析类 传入。
    0.3.3 修复 移除 默认设置 opt(color=True)，防止输入的 msg（不可预料）内出现无法识别的 color tag 导致日志报错。 
    0.3.2 新增 部分功能测试
    0.3.0 新增 飞书 webhook 支持
    0.2.x 修复 部分已知问题
    0.2.0 新增 default topic，在类初始化时设置，则后续所有日志会添加此 topic  
    0.1.3 新增 邮件发送配置  
    0.0.10 工程能够使用