Skip to main content

异步远程和本地调试工具

项目描述

特克

泰克

特拉维斯 (.org) 特拉维斯 (.org) PyPI - 下载 PyPI - 许可证 派皮 PyPI - 状态 PyPI - 格式 PyPI - Python 版本

Tekek [təʔkəʔ] 易于使用、快速、与服务器无关、异步、高度可配置的本地和远程日志记录工具

特征

  • python内置记录器的半直接替换
  • 异步
  • 支持Websocket <super> (WIP) </super>
  • 可靠的远程记录
  • 可靠的文件记录
  • 可靠的控制台日志记录
  • 高度可配置

安装

Tekek 可通过PyPI获得,您可以使用安装它pip

python3 -m pip install tekek

导入Tekek并实例化。

你好世界

from tekek import Tekek


logger = Tekek(name=__name__)

tekek 默认自带 7 级日志记录

logger.log("MESSAGE")
logger.debug("MESSAGE")
logger.info("MESSAGE")
logger.warning("MESSAGE")
logger.error("MESSAGE")
logger.exception("MESSAGE")
logger.critical("MESSAGE")

示例基本用法:

def function_a():
    logger.log("function a starts !", identifier="function_a")
    try:
        ...  # Some Algorithm
        logger.info("finished doing things", "function_a")
    except Exception as e:
        logger.exception("Exception raised {}".format(e), "function_a")

    logger.debug(identifier="function_a", message="function a finished !")
    return

def function_b():
    logger.error("this error came from function b", "function_a")

是的,它是常规功能而不是async功能。为什么 ?因为Tekek足够聪明,可以为您处理。不用担心它几乎不会影响您的应用程序性能

兼容性示例

桑尼奇

哦,是的,如果你要快点,你需要快速开发!使用 tekek 作为您的日志记录和调试工具!

from sanic import Sanic
from sanic.response import json
from tekek import Tekek

app = Sanic("sanic_example")
logger = Tekek("sanic_example", app=app)


@app.route("/", methods=["GET"])
async def root(request):
    logger.log("root accessed ! hello world!", "root")
    return json(
        {
            "status": "Hello World!"
        }
    )

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8000)

快速 API

一个漂亮的 API 框架也需要一个漂亮的 tekek ;)

from fastapi import FastAPI
from tekek import Tekek


app = FastAPI()
logger = Tekek("my_fast_api", app=app)


@app.get("/")
async def root():
    logger.log("root accessed ! hello world!", "root")
    return {"status": "Hello World!"}

你自己的脚本!

当然,您可以使用自己的应用程序!让我们以创建my_app为例

使用coroutine功能

import asyncio
from tekek import Tekek


logger = Tekek("mah_own")


async def my_app(some_param: int):
    logger.log(f"My App Run Successfully! {some_param}")
    ...  # Your Beautiful app

    return True


async def main():
    loop = asyncio.new_event_loop()
    asyncio.set_event_loop(loop)

    await asyncio.gather(
        my_app(3),
        logger.start()
    )


if __name__ == '__main__':
    asyncio.run(main())

使用class

import asyncio
from tekek import Tekek


logger = Tekek("mah_own")


class MyApp:
    def __init__(self):
        self.some_vars = 3

    async def app(self):
        logger.log(f"App Ran! {self.some_vars}")
        ...  # Your beautiful app

    async def start(self):
        asyncio.ensure_future(self.app())


my_app = MyApp()


async def main():
    loop = asyncio.new_event_loop()
    asyncio.set_event_loop(loop)

    await asyncio.gather(
        my_app.start(),
        logger.start()
    )


if __name__ == '__main__':
    asyncio.run(main())

大实战!

继续阅读:使用文档

下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

tekek-0.2.6.tar.gz (10.2 kB 查看哈希

已上传 source

内置分布

tekek-0.2.6-py3-none-any.whl (21.1 kB 查看哈希

已上传 py3