1

我是 node.js 的新手 - 有没有办法 git push 以删除 console.log 语句的方式说出我的 Heroku 生产环境?或者可以把它们留在里面吗?

处理充满调试语句的本地代码的正确方法是什么,不会丢失语句但不会将它们推送到生产环境。

我在本地开发。

感谢您的专业知识。

4

3 回答 3

1

这是一个选项吗? https://npmjs.org/package/remove-console-logs

根据文档:

这只是一个小工具,可以解析您的 JS 并将任何 console.* 调用替换为 0。它使用 falafel 来遍历 AST。Falafel 使用 esprima 来解析你的 JS。最后,optimist用于cli参数解析

于 2013-06-21T21:12:32.677 回答
1

我创建了一个日志帮助文件。然后我在 config.json 或环境变量中使用 debugMode 字段,并使用 nconf npm 从中读取。

以下是 log.coffee 文件的示例

##
# * console logging for the application

nconf = require('nconf')
nconf.argv().env().file file: "./config.json"

##
# log - log information to the console 
#   params:
#     code - DEBUG, ERROR, WARNING, INFO
#     message - the log message to display
#     data - optional data info
#   returns: nothing
module.exports.log = (code, message, data) ->
  if nconf.get('DEBUG_MODE') == 'true' || nconf.get('DEBUG_MODE') == true
    if data?
      # if the data is an object, stringify it for output
      if typeof data == 'object'
        data = JSON.stringify(data)

      console.log code.toUpperCase() + ': ' + message
      console.log code.toUpperCase() + ': ' + '(continued) ' + data
    else
      console.log code.toUpperCase() + ': ' + message

然后在我想要记录的任何文件中,我只需包含该文件并记录到它,而不是到处使用 console.log。

样品.咖啡

logger = require('../log')

module.exports.getEvent = (eventDb) ->
  logger.log 'debug', '/server/adapters/event/getEvent called', eventDb

记录器允许在终端中显示严重性代码、消息和可选数据,如果您未处于调试模式,它根本不会做任何事情。

于 2013-06-21T21:14:41.750 回答
0

日志语句应根据情况进行不同的处理。

调试日志以丢弃

有些console.log()陈述确实是暂时的,不需要保留。要捕获并删除它们,请使用:

git commit -vp

通过结束-pfor--patch模式,您将在提交补丁之前以交互方式查看补丁。每个大块都可以选择将其拆分为更小的块,选择不提交它,或编辑大块以删除console.log. 在你提交之后,你可能仍然有一些你想要摆脱的调试代码。您还可以使用:

git checkout -p

以相同的方式交互式地删除大块。

调试日志记录以保持

首先,使用支持多种环境的配置系统,例如node-config.

其次,制作您自己的小型日志服务,该服务包装了支持日志级别的日志服务,例如bunyanwinston。(我用bunyan)。您的微型日志服务将做的主要事情是包装第三方日志服务并设置您自己的配置默认值。

使用默认日志记录级别配置本地开发debug。使用默认日志级别配置您的生产环境info

现在日志系统将在本地生成调试日志,但不会在生产中生成。

于 2018-02-24T14:00:52.147 回答