【问题标题】:Cannot Get Azure Node.js Logging Enabled无法启用 Azure Node.js 日志记录
【发布时间】:2012-10-23 17:36:26
【问题描述】:

我无法让日志记录为我正在部署到 Windows Azure 的节点应用程序工作。我正在使用 iisnode.yml 文件选项覆盖 web.config。

这是 yml 文件的内容:

node_env: development
nodeProcessCountPerApplication: 1
maxConcurrentRequestsPerProcess: 1024
maxNamedPipeConnectionRetry: 24
namedPipeConnectionRetryDelay: 250
maxNamedPipeConnectionPoolSize: 512
maxNamedPipePooledConnectionAge: 30000
asyncCompletionThreadCount: 0
initialRequestBufferSize: 4096
maxRequestBufferSize: 65536
watchedFiles: *.js;iisnode.yml
uncFileChangesPollingInterval: 5000
gracefulShutdownTimeout: 60000
loggingEnabled: true
logDirectory: iisnode
debuggingEnabled: true
debuggerPortRange: 5058-6058
debuggerPathSegment: debug
maxLogFileSizeInKB: 128
maxTotalLogFileSizeInKB: 1024
maxLogFiles: 20
devErrorsEnabled: true
flushResponse: false
enableXFF: false

这是被覆盖的 web.config 文件的内容:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.webServer>
        <modules runAllManagedModulesForAllRequests="false" />
        <iisnode configOverrides="iisnode.yml" debuggingEnabled="true" loggingEnabled="true" logDirectory="iisnode" devErrorsEnabled="true" nodeProcessCommandLine="&quot;%programfiles(x86)%\nodejs\node.exe&quot;"  />
        <handlers>
            <add name="iisnode" path="server.js" verb="*" modules="iisnode" />
        </handlers>
        <rewrite>
            <rules>
                <clear />
                <rule name="app" enabled="true" patternSyntax="ECMAScript" stopProcessing="true">
                    <match url="server\.js.+" negate="true" />
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
                    <action type="Rewrite" url="server.js" />
                </rule>
                <rule name="LogFile" patternSyntax="ECMAScript" stopProcessing="true">
                    <match url="iisnode"/>
                </rule>
                <rule name="NodeInspector" patternSyntax="ECMAScript" stopProcessing="true">
                    <match url="^server.js\/debug[\/]?" />
                </rule>
                <rule name="StaticContent">
                    <action type="Rewrite" url="public{{REQUEST_URI}}"/>
                </rule>
                <rule name="DynamicContent">
                    <conditions>
                        <add input="{{REQUEST_FILENAME}}" matchType="IsFile" negate="True"/>
                    </conditions>
                    <action type="Rewrite" url="server.js"/>
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

我很确定我已经在这两个选项中启用了每个日志记录选项,但是在部署过程中 Azure 似乎都没有选择这两个选项,当我访问典型的日志记录位置时,http://mysite.com/iisnode/index.htmlhttp://mysite.com/iisnode/ 我收到了 404错误。

任何帮助或想法将不胜感激。

【问题讨论】:

  • 我也有同样的问题 :(

标签: node.js azure iisnode


【解决方案1】:

如果您使用的是 express,请将其添加到您的静态文件夹位置

app.use(express.static(__dirname + '/../iisnode'));

或者像下面这样定义你自己的日志路由..在这里你可以得到幻想并且只显示错误等。

//logging routes
var fs = require('fs');
app.get('/iisnode', function(req, res){
  var _index = fs.readFileSync('./iisnode/index.html', 'utf8');
  var index = _index.replace("logCell.innerHTML = '<a href=\"' + logFile.file + '\">log</a>';", "logCell.innerHTML = '<a href=\"/iisnode/' + logFile.file + '\">log</a>';");
  res.send(index);
});

app.get('/iisnode/:log', function(req, res){
  var _log = fs.readFileSync('./iisnode/' + req.route.params['log'], 'utf8');
  res.contentType('text/plain');
  res.send(_log);
});

您可以将 app.get 替换为您正在使用的任何路由解决方案。

记得在生产中启动应用程序之前删除。

【讨论】:

    猜你喜欢
    • 2017-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-28
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    相关资源
    最近更新 更多