如何在log4js smtp appender中使用非SMTP传输?

时间:2015-04-06 22:03:52

标签: node.js sendgrid log4js-node

如果你阅读log4js documentation for SMTP appender,你会看到SMTP传输的例子,它甚至不适用于最新的节点制作者(我在写作时使用了nodemailer 1.3.0) )。

Docs将此错误配置显示为一个示例:

{ "appenders": [
    {
        "type": "smtp",
        "recipients": "foo@bar.com",
        "sendInterval": 60,
        "transport": "SMTP",
        "SMTP": {
            "host": "smtp.gmail.com",
            "secureConnection": true,
            "port": 465,
            "auth": {
                "user": "foo@bar.com",
                "pass": "bar_foo"
            }
        }
    }
] }

如何更改配置以使用SMTP以外的传输?我想要的是配置log4js以使用SendGrid。

1 个答案:

答案 0 :(得分:2)

经过几个小时的反复试验,我发现了解决方案。以下是带有控制台和smtp appender的示例log4js配置:

sendgridTransport = require('nodemailer-sendgrid-transport');

log4js.configure({
    appenders: [{
        type: 'console'
    }, {
        type: 'logLevelFilter',
        level: 'ERROR',
        appender: {
            type: 'smtp',
            recipients: 'admin@example.com',
            sender: 'system@example.com',
            sendInterval: 60,
            transport: sendgridTransport({
                auth: {
                    api_user: config.smtpUsername,
                    api_key: config.smtpPassword
                }
            })
        }
    }]
});

您可以以类似的方式使用任何其他传输方式。支持者传输是nodemailer支持的所有传输(例如:AWS SES,SMTP,...)。请参阅要使用的传输文档,以了解如何实例化它。