## 作用
把日志文件拖动到窗口即可解析日志
## 使用
安装
```commandline
pip install LogTranslate
```
项目根目录 创建 config.py
里面定义字段 translator数组
```commandline
translators = [SysLogTranslator(tag_translators=[BluetoothTranslator(), CrashPatternTranslator()])]
```
SysLogTranslator是将文件中每行字符串解析出 tag,time,pid,msg
SysLogTranslator的参数 tag_translators 是数组 用来解析 各种tag对应的内容
解析tag的基类有
- TagPatternTranslator 通过正则匹配tag然后解析
```python
class CrashPatternTranslator(TagPatternTranslator):
def __init__(self):
super().__init__({
r"AndroidRuntime|FATAL.*|System.err.*": activity_task_translator
})
def activity_task_translator(tag, msg): # 这里两个参数
# todo 这里需要过滤包名
return Log(translated=" ------ %s > %s----- " % (tag, msg), level=Level.e)
```
- TagStrTranslator 通过字符串匹配tag然后解析
```python
class BluetoothTranslator(TagStrTranslator):
def __init__(self):
super().__init__({
"BluetoothAdapter": bluetooth_adapter,
})
def bluetooth_adapter(msg):# 这里一个参数
# todo 这里需要过滤包名
return Log(translated=" ------ %s > %s----- " % (tag, msg), level=Level.e)
```
- SecStrTagTranslator 解析二级tag
```python
class SecTagDemoTranslator(SecStrTagTranslator):
def __init__(self):
super().__init__("DFJ",
lambda string: re.search(r"(?P<tag>.*?) *:(?P<msg>.*)", string),
[
SysLogTranslator({
"sec_tag": self.new_tag
})
])
def new_tag(self, tag, msg):# 这里两个参数
return Log(translated=msg)
```
## 打包成 exe
#### 1 ,项目根目录创建 ui.py
```python
if __name__ == "__main__":
app = QApplication(sys.argv)
window = PyQt6Window()
window.show()
sys.exit(app.exec())
```
#### 2, 执行打包命令
```commandline
pyinstaller -n [name] --hidden-import config -F -w [-i tools.ico] ui.py
```
### 库地址
https://pypi.org/project/LogTranslate/0.1/
读取文件-->每行文件-->
判断关键tag[每个translate先判断自己的tag满足,然后再正则解析str到通用log,解析后下一个解析的不用解析str-log]
每个translate 都要配置通用的多个tag用于判断是否需要解析然后正则,解析出通用log格式之后,
tag的正则可以创建translae对象的时候创建好re.compile("")
Raw data
{
"_id": null,
"home_page": "https://github.com/5hmlA/PyTools",
"name": "LogTranslate",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": null,
"keywords": "tools log translate",
"author": "5hmlA",
"author_email": "gene.jzy@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/ca/fd/0dd967f063ad7e0c0774eb797cc95b7f4f8645fedfca557881723005a9df/logtranslate-1.6.tar.gz",
"platform": null,
"description": "## \u4f5c\u7528\n\n\u628a\u65e5\u5fd7\u6587\u4ef6\u62d6\u52a8\u5230\u7a97\u53e3\u5373\u53ef\u89e3\u6790\u65e5\u5fd7\n\n## \u4f7f\u7528\n\n\u5b89\u88c5\n\n```commandline\npip install LogTranslate\n```\n\n\u9879\u76ee\u6839\u76ee\u5f55 \u521b\u5efa config.py\n\u91cc\u9762\u5b9a\u4e49\u5b57\u6bb5 translator\u6570\u7ec4\n\n```commandline\ntranslators = [SysLogTranslator(tag_translators=[BluetoothTranslator(), CrashPatternTranslator()])]\n```\n\nSysLogTranslator\u662f\u5c06\u6587\u4ef6\u4e2d\u6bcf\u884c\u5b57\u7b26\u4e32\u89e3\u6790\u51fa tag,time,pid,msg\nSysLogTranslator\u7684\u53c2\u6570 tag_translators \u662f\u6570\u7ec4 \u7528\u6765\u89e3\u6790 \u5404\u79cdtag\u5bf9\u5e94\u7684\u5185\u5bb9\n\u89e3\u6790tag\u7684\u57fa\u7c7b\u6709\n\n- TagPatternTranslator \u901a\u8fc7\u6b63\u5219\u5339\u914dtag\u7136\u540e\u89e3\u6790\n ```python\n class CrashPatternTranslator(TagPatternTranslator):\n def __init__(self):\n super().__init__({\n r\"AndroidRuntime|FATAL.*|System.err.*\": activity_task_translator\n })\n \n def activity_task_translator(tag, msg): # \u8fd9\u91cc\u4e24\u4e2a\u53c2\u6570\n # todo \u8fd9\u91cc\u9700\u8981\u8fc7\u6ee4\u5305\u540d\n return Log(translated=\" ------ %s > %s----- \" % (tag, msg), level=Level.e)\n\n ```\n\n- TagStrTranslator \u901a\u8fc7\u5b57\u7b26\u4e32\u5339\u914dtag\u7136\u540e\u89e3\u6790\n ```python\n class BluetoothTranslator(TagStrTranslator):\n def __init__(self):\n super().__init__({\n \"BluetoothAdapter\": bluetooth_adapter,\n })\n \n def bluetooth_adapter(msg):# \u8fd9\u91cc\u4e00\u4e2a\u53c2\u6570\n # todo \u8fd9\u91cc\u9700\u8981\u8fc7\u6ee4\u5305\u540d\n return Log(translated=\" ------ %s > %s----- \" % (tag, msg), level=Level.e)\n\n ```\n- SecStrTagTranslator \u89e3\u6790\u4e8c\u7ea7tag\n ```python\n class SecTagDemoTranslator(SecStrTagTranslator):\n def __init__(self):\n super().__init__(\"DFJ\",\n lambda string: re.search(r\"(?P<tag>.*?) *:(?P<msg>.*)\", string),\n [\n SysLogTranslator({\n \"sec_tag\": self.new_tag\n })\n ])\n\n def new_tag(self, tag, msg):# \u8fd9\u91cc\u4e24\u4e2a\u53c2\u6570\n return Log(translated=msg)\n ```\n\n## \u6253\u5305\u6210 exe\n\n#### 1 \uff0c\u9879\u76ee\u6839\u76ee\u5f55\u521b\u5efa ui.py\n\n```python\n\nif __name__ == \"__main__\":\n app = QApplication(sys.argv)\n window = PyQt6Window()\n window.show()\n sys.exit(app.exec())\n```\n\n#### 2\uff0c \u6267\u884c\u6253\u5305\u547d\u4ee4\n\n```commandline\n\npyinstaller -n [name] --hidden-import config -F -w [-i tools.ico] ui.py\n\n```\n\n### \u5e93\u5730\u5740\n\nhttps://pypi.org/project/LogTranslate/0.1/\n\n\u8bfb\u53d6\u6587\u4ef6-->\u6bcf\u884c\u6587\u4ef6-->\n\u5224\u65ad\u5173\u952etag[\u6bcf\u4e2atranslate\u5148\u5224\u65ad\u81ea\u5df1\u7684tag\u6ee1\u8db3\uff0c\u7136\u540e\u518d\u6b63\u5219\u89e3\u6790str\u5230\u901a\u7528log\uff0c\u89e3\u6790\u540e\u4e0b\u4e00\u4e2a\u89e3\u6790\u7684\u4e0d\u7528\u89e3\u6790str-log]\n\n\u6bcf\u4e2atranslate \u90fd\u8981\u914d\u7f6e\u901a\u7528\u7684\u591a\u4e2atag\u7528\u4e8e\u5224\u65ad\u662f\u5426\u9700\u8981\u89e3\u6790\u7136\u540e\u6b63\u5219\uff0c\u89e3\u6790\u51fa\u901a\u7528log\u683c\u5f0f\u4e4b\u540e\uff0c\ntag\u7684\u6b63\u5219\u53ef\u4ee5\u521b\u5efatranslae\u5bf9\u8c61\u7684\u65f6\u5019\u521b\u5efa\u597dre.compile(\"\")\n",
"bugtrack_url": null,
"license": "MIT Licence",
"summary": "A Python library for translate log from log files",
"version": "1.6",
"project_urls": {
"Homepage": "https://github.com/5hmlA/PyTools"
},
"split_keywords": [
"tools",
"log",
"translate"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "d547bcc646f50a63854aae08d43edf44d103cbc20e6b32072ca629372c6a545c",
"md5": "f7b8b33679a92760b3f87dc56aebc8cd",
"sha256": "3dca90e47add6ebf7fada0ab65954fcc514b16ac03499a8ca3e81db5d04d639d"
},
"downloads": -1,
"filename": "logtranslate-1.6-py3-none-any.whl",
"has_sig": false,
"md5_digest": "f7b8b33679a92760b3f87dc56aebc8cd",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6",
"size": 36513,
"upload_time": "2025-09-10T15:43:35",
"upload_time_iso_8601": "2025-09-10T15:43:35.322677Z",
"url": "https://files.pythonhosted.org/packages/d5/47/bcc646f50a63854aae08d43edf44d103cbc20e6b32072ca629372c6a545c/logtranslate-1.6-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "cafd0dd967f063ad7e0c0774eb797cc95b7f4f8645fedfca557881723005a9df",
"md5": "666fa882d7eb0cbd2ab8a3c5fc91e3f0",
"sha256": "8a4bcf067292a8955d4bff324cdd4c2deb326c1fafa21b2171f974d6cac34cb8"
},
"downloads": -1,
"filename": "logtranslate-1.6.tar.gz",
"has_sig": false,
"md5_digest": "666fa882d7eb0cbd2ab8a3c5fc91e3f0",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 33192,
"upload_time": "2025-09-10T15:43:36",
"upload_time_iso_8601": "2025-09-10T15:43:36.287254Z",
"url": "https://files.pythonhosted.org/packages/ca/fd/0dd967f063ad7e0c0774eb797cc95b7f4f8645fedfca557881723005a9df/logtranslate-1.6.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-09-10 15:43:36",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "5hmlA",
"github_project": "PyTools",
"github_not_found": true,
"lcname": "logtranslate"
}