{"id":18484146,"url":"https://github.com/jdf2e/jdf-log","last_synced_at":"2025-06-12T14:36:10.104Z","repository":{"id":57279961,"uuid":"74557981","full_name":"jdf2e/jdf-log","owner":"jdf2e","description":"jdf日志模块","archived":false,"fork":false,"pushed_at":"2016-12-12T04:52:23.000Z","size":12,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-06-01T16:05:57.593Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jdf2e.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-11-23T08:49:05.000Z","updated_at":"2022-05-02T09:21:50.000Z","dependencies_parsed_at":"2022-09-17T17:22:27.547Z","dependency_job_id":null,"html_url":"https://github.com/jdf2e/jdf-log","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/jdf2e/jdf-log","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdf2e%2Fjdf-log","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdf2e%2Fjdf-log/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdf2e%2Fjdf-log/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdf2e%2Fjdf-log/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jdf2e","download_url":"https://codeload.github.com/jdf2e/jdf-log/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdf2e%2Fjdf-log/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259426829,"owners_count":22855543,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-06T12:38:44.253Z","updated_at":"2025-06-12T14:36:09.841Z","avatar_url":"https://github.com/jdf2e.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## jdf-log\n\njdf使用的日志模块，基于winston\n\n### Methods\n\n* level(levelName) get/set 设置日志优先级，采用npm的level方式，共5个日志级别\n``` js\n{ error: 0, warn: 1, info: 2, verbose: 3, debug: 4, silly: 5 }\n```\n`日志级别越高，显示的内容越多`。如果不给参数，就返回当前的日志级别，如果给定参数就设置成需要的级别。\n* profile(name,[startFormatter], [endFormatter]) 获取某个函数的执行时间，开始调用一次，结束调用一次，*startFormatter*和*endFormatter*为可选参数，如果不提供则会有一个默认的日志输出。默认的格式是：\n``` js\n`Starting '${name}'...`\n`Finished '${name}' after ${timeSpan} ms`\n```\n你可以提供自定义的输出，注意他们的参数，startFormatter给定的是name，而endFormatter给定的是name和timeSpan，timeSpan单位是ms，你可以仅在开始的时候提供startFormatter和endFormatter：\n``` js\nconst startFn = (name) =\u003e {\n    logger.info(`Run ${name}`);\n}\n\nconst endFn = (name, timeSpan) =\u003e {\n    logger.info(`Finish ${name}, uesd about ${timeSpan} ms`)\n}\n\nlogger.profile('test command', startFn, endFn);\nsetTimeout(function() {\n    logger.profile('test command');\n},1234);\n\n// output\nRun test command\nFinish test command, used about 1234 ms\n```\n* error(), warn(), info(), verbose(), debug(), silly() 参考[winston](https://github.com/winstonjs/winston#using-logging-levels)的对应函数\n\n### Work in jdf\n\njdf的入口处获取参数，看是否需要verbose方式，内部的日志，常规显示的可以用logger.info()，需要啰嗦模式的就用logger.verbose()，当然如果需要更啰嗦的方式，可以用logger.debug()，根据入口的配置设置显示的level级别即可，现在\nverbose 级别的日志级别名称，会在最后展示的时候设置成info，主要是为了统一，其他的都还是原来的日志级别的名字\n\n一个简单的demo\n``` js\nconst logger = require('jdf-log');\n\nlogger.level('verbose');\n\nlogger.profile('output');\nlogger.warn('Hello distributed log files! %d aaa %d', 123, 456);\nlogger.info('this is step one');\nlogger.info('this is step two');\nlogger.silly('ni da yeeeee de'); // 当前日志级别是verbose,所有silly级别的日志不会显示\nlogger.error(new Error('this is an error').message);\nlogger.verbose('Verboseeeeeeeeeeeeeeeeeee!');\nsetTimeout(() =\u003e {\n  logger.profile('output');\n},1000);\n```\n输出为：\n``` sh\n[09:58:27] Starting 'output'...\n[09:58:27] WARN Hello distributed log files! 123 aaa 777\n[09:58:27] INFO this is step one\n[09:58:27] INFO this is step two\n[09:58:27] ERROR this is an error\n[09:58:27] INFO Verboseeeeeeeeeeeeeeeeeee!\n[09:58:28] Finished 'output' after 1012 ms\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjdf2e%2Fjdf-log","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjdf2e%2Fjdf-log","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjdf2e%2Fjdf-log/lists"}