Skip to content

Commit 7427f22

Browse files
committed
fix #168: integrated logging story
1 parent 96fb80f commit 7427f22

27 files changed

+775
-445
lines changed

Diff for: src/config/iisnode_schema.xml

+4-3
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ Details at http://learn.iis.net/page.aspx/241/configuration-extensibility/
3131
<attribute name="asyncCompletionThreadCount" type="uint" defaultValue="0"/>
3232
<attribute name="nodeProcessCountPerApplication" type="uint" defaultValue="1"/>
3333
<attribute name="nodeProcessCommandLine" type="string" expanded="true" defaultValue="&quot;%programfiles%\nodejs\node.exe&quot;"/>
34+
<attribute name="interceptor" type="string" expanded="true" defaultValue="&quot;%programfiles%\iisnode\interceptor.js&quot;" />
3435
<attribute name="maxConcurrentRequestsPerProcess" type="uint" allowInfitnite="true" defaultValue="1024"/>
3536
<attribute name="maxNamedPipeConnectionRetry" type="uint" defaultValue="24"/>
3637
<attribute name="namedPipeConnectionRetryDelay" type="uint" defaultValue="250"/>
@@ -40,14 +41,14 @@ Details at http://learn.iis.net/page.aspx/241/configuration-extensibility/
4041
<attribute name="maxRequestBufferSize" type="uint" defaultValue="65536"/>
4142
<attribute name="uncFileChangesPollingInterval" type="uint" defaultValue="5000"/>
4243
<attribute name="gracefulShutdownTimeout" type="uint" defaultValue="60000"/>
43-
<attribute name="logDirectoryNameSuffix" type="string" expanded="true" defaultValue="logs"/>
44+
<attribute name="logDirectory" type="string" expanded="true" defaultValue="iisnode"/>
4445
<attribute name="debuggingEnabled" type="bool" defaultValue="true"/>
4546
<attribute name="debuggerPathSegment" type="string" expanded="true" defaultValue="debug"/>
4647
<attribute name="debuggerPortRange" type="string" expanded="true" defaultValue="5058-6058"/>
47-
<attribute name="logFileFlushInterval" type="uint" defaultValue="5000"/>
4848
<attribute name="maxLogFileSizeInKB" type="uint" defaultValue="128"/>
49+
<attribute name="maxTotalLogFileSizeInKB" type="uint" defaultValue="1024"/>
50+
<attribute name="maxLogFiles" type="uint" defaultValue="20"/>
4951
<attribute name="loggingEnabled" type="bool" defaultValue="true"/>
50-
<attribute name="appendToExistingLog" type="bool" defaultValue="false"/>
5152
<attribute name="devErrorsEnabled" type="bool" defaultValue="true"/>
5253
<attribute name="flushResponse" type="bool" defaultValue="false"/>
5354
<attribute name="watchedFiles" type="string" expanded="true" defaultValue="*.js;iisnode.yml"/>

Diff for: src/config/iisnode_schema_x64.xml

+4-3
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ Details at http://learn.iis.net/page.aspx/241/configuration-extensibility/
3131
<attribute name="asyncCompletionThreadCount" type="uint" defaultValue="0"/>
3232
<attribute name="nodeProcessCountPerApplication" type="uint" defaultValue="1"/>
3333
<attribute name="nodeProcessCommandLine" type="string" expanded="true" defaultValue="&quot;%programfiles(x86)%\nodejs\node.exe&quot;"/>
34+
<attribute name="interceptor" type="string" expanded="true" defaultValue="&quot;%programfiles%\iisnode\interceptor.js&quot;" />
3435
<attribute name="maxConcurrentRequestsPerProcess" type="uint" allowInfitnite="true" defaultValue="1024"/>
3536
<attribute name="maxNamedPipeConnectionRetry" type="uint" defaultValue="24"/>
3637
<attribute name="namedPipeConnectionRetryDelay" type="uint" defaultValue="250"/>
@@ -40,14 +41,14 @@ Details at http://learn.iis.net/page.aspx/241/configuration-extensibility/
4041
<attribute name="maxRequestBufferSize" type="uint" defaultValue="65536"/>
4142
<attribute name="uncFileChangesPollingInterval" type="uint" defaultValue="5000"/>
4243
<attribute name="gracefulShutdownTimeout" type="uint" defaultValue="60000"/>
43-
<attribute name="logDirectoryNameSuffix" type="string" expanded="true" defaultValue="logs"/>
44+
<attribute name="logDirectory" type="string" expanded="true" defaultValue="iisnode"/>
4445
<attribute name="debuggingEnabled" type="bool" defaultValue="true"/>
4546
<attribute name="debuggerPathSegment" type="string" expanded="true" defaultValue="debug"/>
4647
<attribute name="debuggerPortRange" type="string" expanded="true" defaultValue="5058-6058"/>
47-
<attribute name="logFileFlushInterval" type="uint" defaultValue="5000"/>
4848
<attribute name="maxLogFileSizeInKB" type="uint" defaultValue="128"/>
49+
<attribute name="maxTotalLogFileSizeInKB" type="uint" defaultValue="1024"/>
50+
<attribute name="maxLogFiles" type="uint" defaultValue="20"/>
4951
<attribute name="loggingEnabled" type="bool" defaultValue="true"/>
50-
<attribute name="appendToExistingLog" type="bool" defaultValue="false"/>
5152
<attribute name="devErrorsEnabled" type="bool" defaultValue="true"/>
5253
<attribute name="flushResponse" type="bool" defaultValue="false"/>
5354
<attribute name="watchedFiles" type="string" expanded="true" defaultValue="*.js;iisnode.yml"/>

Diff for: src/config/iisnode_schema_x64_wow.xml

+59
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
<!--
2+
3+
This file describes the configuration schema for the iisnode IIS module.
4+
5+
To install this schema:
6+
7+
1. This file must be saved to %windir%\system32\inetsrv\config\schema.
8+
2. The following entry must be added to %windir%\system32\inetsrv\config\applicationhost.config:
9+
10+
<configSections>
11+
...
12+
<sectionGroup name="system.webServer">
13+
<section name="iisnode" overrideModeDefault="Allow"/>
14+
...
15+
</sectionGroup>
16+
</configSections>
17+
18+
Following installation, the iisnode module can be configured using the web.config file specific to the application:
19+
20+
<system.webServer>
21+
<iisnode ... />
22+
</system.webServer>
23+
24+
Details at http://learn.iis.net/page.aspx/241/configuration-extensibility/
25+
26+
-->
27+
28+
<configSchema>
29+
<sectionSchema name="system.webServer/iisnode">
30+
<attribute name="node_env" type="string" expanded="true" defaultValue="%node_env%"/>
31+
<attribute name="asyncCompletionThreadCount" type="uint" defaultValue="0"/>
32+
<attribute name="nodeProcessCountPerApplication" type="uint" defaultValue="1"/>
33+
<attribute name="nodeProcessCommandLine" type="string" expanded="true" defaultValue="&quot;%programfiles(x86)%\nodejs\node.exe&quot;"/>
34+
<attribute name="interceptor" type="string" expanded="true" defaultValue="&quot;%programfiles(x86)%\iisnode\interceptor.js&quot;" />
35+
<attribute name="maxConcurrentRequestsPerProcess" type="uint" allowInfitnite="true" defaultValue="1024"/>
36+
<attribute name="maxNamedPipeConnectionRetry" type="uint" defaultValue="24"/>
37+
<attribute name="namedPipeConnectionRetryDelay" type="uint" defaultValue="250"/>
38+
<attribute name="maxNamedPipeConnectionPoolSize" type="uint" defaultValue="512"/>
39+
<attribute name="maxNamedPipePooledConnectionAge" type="uint" defaultValue="30000"/>
40+
<attribute name="initialRequestBufferSize" type="uint" defaultValue="4096"/>
41+
<attribute name="maxRequestBufferSize" type="uint" defaultValue="65536"/>
42+
<attribute name="uncFileChangesPollingInterval" type="uint" defaultValue="5000"/>
43+
<attribute name="gracefulShutdownTimeout" type="uint" defaultValue="60000"/>
44+
<attribute name="logDirectory" type="string" expanded="true" defaultValue="iisnode"/>
45+
<attribute name="debuggingEnabled" type="bool" defaultValue="true"/>
46+
<attribute name="debuggerPathSegment" type="string" expanded="true" defaultValue="debug"/>
47+
<attribute name="debuggerPortRange" type="string" expanded="true" defaultValue="5058-6058"/>
48+
<attribute name="maxLogFileSizeInKB" type="uint" defaultValue="128"/>
49+
<attribute name="maxTotalLogFileSizeInKB" type="uint" defaultValue="1024"/>
50+
<attribute name="maxLogFiles" type="uint" defaultValue="20"/>
51+
<attribute name="loggingEnabled" type="bool" defaultValue="true"/>
52+
<attribute name="devErrorsEnabled" type="bool" defaultValue="true"/>
53+
<attribute name="flushResponse" type="bool" defaultValue="false"/>
54+
<attribute name="watchedFiles" type="string" expanded="true" defaultValue="*.js;iisnode.yml"/>
55+
<attribute name="enableXFF" type="bool" defaultValue="false"/>
56+
<attribute name="promoteServerVars" type="string" defaultValue=""/>
57+
<attribute name="configOverrides" type="string" expanded="true" defaultValue="iisnode.yml"/>
58+
</sectionSchema>
59+
</configSchema>

Diff for: src/iisnode/cmoduleconfiguration.cpp

+101-24
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@ HTTP_MODULE_ID CModuleConfiguration::moduleId = NULL;
77
BOOL CModuleConfiguration::invalid = FALSE;
88

99
CModuleConfiguration::CModuleConfiguration()
10-
: nodeProcessCommandLine(NULL), logDirectoryNameSuffix(NULL), debuggerPathSegment(NULL),
10+
: nodeProcessCommandLine(NULL), logDirectory(NULL), debuggerPathSegment(NULL),
1111
debugPortRange(NULL), debugPortStart(0), debugPortEnd(0), node_env(NULL), watchedFiles(NULL),
1212
enableXFF(FALSE), promoteServerVars(NULL), promoteServerVarsRaw(NULL), configOverridesFileName(NULL),
13-
configOverrides(NULL)
13+
configOverrides(NULL), interceptor(NULL)
1414
{
1515
InitializeSRWLock(&this->srwlock);
1616
}
@@ -23,10 +23,15 @@ CModuleConfiguration::~CModuleConfiguration()
2323
this->nodeProcessCommandLine = NULL;
2424
}
2525

26-
if (NULL != this->logDirectoryNameSuffix)
26+
if (NULL != this->interceptor) {
27+
delete [] this->interceptor;
28+
this->interceptor = NULL;
29+
}
30+
31+
if (NULL != this->logDirectory)
2732
{
28-
delete [] this->logDirectoryNameSuffix;
29-
this->logDirectoryNameSuffix = NULL;
33+
delete [] this->logDirectory;
34+
this->logDirectory = NULL;
3035
}
3136

3237
if (NULL != this->debuggerPathSegment)
@@ -240,6 +245,48 @@ HRESULT CModuleConfiguration::CreateNodeEnvironment(IHttpContext* ctx, DWORD deb
240245
tmpIndex += propertySize + 1;
241246
}
242247

248+
if (CModuleConfiguration::GetLoggingEnabled(ctx))
249+
{
250+
// set IISNODE_LOGGINGENABLED variable
251+
252+
ErrorIf((tmpSize - (tmpIndex - tmpStart)) < 25, ERROR_NOT_ENOUGH_MEMORY);
253+
sprintf(tmpIndex, "IISNODE_LOGGINGENABLED=1");
254+
tmpIndex += 25;
255+
256+
// set IISNODE_LOGDIRECTORY variable based on the iisnode/@logDirectory configuration setting, if not empty
257+
258+
LPWSTR logDirectory = CModuleConfiguration::GetLogDirectory(ctx);
259+
if (0 != wcscmp(L"", logDirectory))
260+
{
261+
ErrorIf((tmpSize - (tmpIndex - tmpStart)) < 22, ERROR_NOT_ENOUGH_MEMORY);
262+
sprintf(tmpIndex, "IISNODE_LOGDIRECTORY=");
263+
tmpIndex += 21;
264+
ErrorIf(0 == (propertySize = WideCharToMultiByte(CP_ACP, 0, logDirectory, wcslen(logDirectory), NULL, 0, NULL, NULL)), E_FAIL);
265+
ErrorIf((propertySize + 1) > (tmpSize - (tmpStart - tmpIndex)), ERROR_NOT_ENOUGH_MEMORY);
266+
ErrorIf(propertySize != WideCharToMultiByte(CP_ACP, 0, logDirectory, wcslen(logDirectory), tmpIndex, propertySize, NULL, NULL), E_FAIL);
267+
tmpIndex += propertySize + 1;
268+
}
269+
270+
// set IISNODE_MAXTOTALLOGFILESIZEINKB, IISNODE_MAXLOGFILESIZEINKB, and IISNODE_MAXLOGFILES variables
271+
272+
char tmp[64];
273+
sprintf(tmp, "%d", CModuleConfiguration::GetMaxTotalLogFileSizeInKB(ctx));
274+
ErrorIf((tmpSize - (tmpIndex - tmpStart)) < (strlen(tmp) + 33), ERROR_NOT_ENOUGH_MEMORY);
275+
sprintf(tmpIndex, "IISNODE_MAXTOTALLOGFILESIZEINKB=%s", tmp);
276+
tmpIndex += strlen(tmp) + 33;
277+
278+
sprintf(tmp, "%d", CModuleConfiguration::GetMaxLogFileSizeInKB(ctx));
279+
ErrorIf((tmpSize - (tmpIndex - tmpStart)) < (strlen(tmp) + 28), ERROR_NOT_ENOUGH_MEMORY);
280+
sprintf(tmpIndex, "IISNODE_MAXLOGFILESIZEINKB=%s", tmp);
281+
tmpIndex += strlen(tmp) + 28;
282+
283+
sprintf(tmp, "%d", CModuleConfiguration::GetMaxLogFiles(ctx));
284+
ErrorIf((tmpSize - (tmpIndex - tmpStart)) < (strlen(tmp) + 21), ERROR_NOT_ENOUGH_MEMORY);
285+
sprintf(tmpIndex, "IISNODE_MAXLOGFILES=%s", tmp);
286+
tmpIndex += strlen(tmp) + 21;
287+
288+
}
289+
243290
// add a trailing zero to new variables
244291

245292
ErrorIf(1 > (tmpSize - (tmpStart - tmpIndex)), ERROR_NOT_ENOUGH_MEMORY);
@@ -584,21 +631,21 @@ HRESULT CModuleConfiguration::ApplyConfigOverrideKeyValue(IHttpContext* context,
584631
{
585632
CheckError(GetDWORD(valueStart, &config->gracefulShutdownTimeout));
586633
}
587-
else if (0 == strcmpi(keyStart, "logFileFlushInterval"))
634+
else if (0 == strcmpi(keyStart, "maxTotalLogFileSizeInKB"))
588635
{
589-
CheckError(GetDWORD(valueStart, &config->logFileFlushInterval));
636+
CheckError(GetDWORD(valueStart, &config->maxTotalLogFileSizeInKB));
590637
}
591638
else if (0 == strcmpi(keyStart, "maxLogFileSizeInKB"))
592639
{
593640
CheckError(GetDWORD(valueStart, &config->maxLogFileSizeInKB));
594641
}
595-
else if (0 == strcmpi(keyStart, "loggingEnabled"))
642+
else if (0 == strcmpi(keyStart, "maxLogFiles"))
596643
{
597-
CheckError(GetBOOL(valueStart, &config->loggingEnabled));
644+
CheckError(GetDWORD(valueStart, &config->maxLogFiles));
598645
}
599-
else if (0 == strcmpi(keyStart, "appendToExistingLog"))
646+
else if (0 == strcmpi(keyStart, "loggingEnabled"))
600647
{
601-
CheckError(GetBOOL(valueStart, &config->appendToExistingLog));
648+
CheckError(GetBOOL(valueStart, &config->loggingEnabled));
602649
}
603650
else if (0 == strcmpi(keyStart, "devErrorsEnabled"))
604651
{
@@ -616,9 +663,9 @@ HRESULT CModuleConfiguration::ApplyConfigOverrideKeyValue(IHttpContext* context,
616663
{
617664
CheckError(GetBOOL(valueStart, &config->enableXFF));
618665
}
619-
else if (0 == strcmpi(keyStart, "logDirectoryNameSuffix"))
666+
else if (0 == strcmpi(keyStart, "logDirectory"))
620667
{
621-
CheckError(GetString(valueStart, &config->logDirectoryNameSuffix));
668+
CheckError(GetString(valueStart, &config->logDirectory));
622669
}
623670
else if (0 == strcmpi(keyStart, "node_env"))
624671
{
@@ -659,7 +706,24 @@ HRESULT CModuleConfiguration::ApplyConfigOverrideKeyValue(IHttpContext* context,
659706
strcpy(config->nodeProcessCommandLine, "");
660707
}
661708
}
709+
else if (0 == strcmpi(keyStart, "interceptor"))
710+
{
711+
if (config->interceptor)
712+
{
713+
delete [] config->interceptor;
714+
config->interceptor = NULL;
715+
}
662716

717+
ErrorIf(NULL == (config->interceptor = new char[MAX_PATH]), ERROR_NOT_ENOUGH_MEMORY);
718+
if (valueStart)
719+
{
720+
strcpy(config->interceptor, valueStart);
721+
}
722+
else
723+
{
724+
strcpy(config->interceptor, "");
725+
}
726+
}
663727

664728
return S_OK;
665729
Error:
@@ -996,13 +1060,13 @@ HRESULT CModuleConfiguration::GetConfig(IHttpContext* context, CModuleConfigurat
9961060
CheckError(GetDWORD(section, L"maxRequestBufferSize", &c->maxRequestBufferSize));
9971061
CheckError(GetDWORD(section, L"uncFileChangesPollingInterval", &c->uncFileChangesPollingInterval));
9981062
CheckError(GetDWORD(section, L"gracefulShutdownTimeout", &c->gracefulShutdownTimeout));
999-
CheckError(GetDWORD(section, L"logFileFlushInterval", &c->logFileFlushInterval));
1063+
CheckError(GetDWORD(section, L"maxTotalLogFileSizeInKB", &c->maxTotalLogFileSizeInKB));
10001064
CheckError(GetDWORD(section, L"maxLogFileSizeInKB", &c->maxLogFileSizeInKB));
1065+
CheckError(GetDWORD(section, L"maxLogFiles", &c->maxLogFiles));
10011066
CheckError(GetBOOL(section, L"loggingEnabled", &c->loggingEnabled));
1002-
CheckError(GetBOOL(section, L"appendToExistingLog", &c->appendToExistingLog));
10031067
CheckError(GetBOOL(section, L"devErrorsEnabled", &c->devErrorsEnabled));
10041068
CheckError(GetBOOL(section, L"flushResponse", &c->flushResponse));
1005-
CheckError(GetString(section, L"logDirectoryNameSuffix", &c->logDirectoryNameSuffix));
1069+
CheckError(GetString(section, L"logDirectory", &c->logDirectory));
10061070
CheckError(GetBOOL(section, L"debuggingEnabled", &c->debuggingEnabled));
10071071
CheckError(GetString(section, L"node_env", &c->node_env));
10081072
CheckError(GetString(section, L"debuggerPortRange", &c->debugPortRange));
@@ -1024,6 +1088,14 @@ HRESULT CModuleConfiguration::GetConfig(IHttpContext* context, CModuleConfigurat
10241088
delete [] commandLine;
10251089
commandLine = NULL;
10261090

1091+
// interceptor
1092+
1093+
CheckError(GetString(section, L"interceptor", &commandLine));
1094+
ErrorIf(NULL == (c->interceptor = new char[MAX_PATH]), ERROR_NOT_ENOUGH_MEMORY);
1095+
ErrorIf(0 != wcstombs_s(&i, c->interceptor, (size_t)MAX_PATH, commandLine, _TRUNCATE), ERROR_INVALID_PARAMETER);
1096+
delete [] commandLine;
1097+
commandLine = NULL;
1098+
10271099
// apply config setting overrides from the optional YAML configuration file
10281100

10291101
CheckError(CModuleConfiguration::ApplyYamlConfigOverrides(context, c));
@@ -1097,6 +1169,11 @@ LPCTSTR CModuleConfiguration::GetNodeProcessCommandLine(IHttpContext* ctx)
10971169
GETCONFIG(nodeProcessCommandLine)
10981170
}
10991171

1172+
LPCTSTR CModuleConfiguration::GetInterceptor(IHttpContext* ctx)
1173+
{
1174+
GETCONFIG(interceptor)
1175+
}
1176+
11001177
DWORD CModuleConfiguration::GetMaxConcurrentRequestsPerProcess(IHttpContext* ctx)
11011178
{
11021179
GETCONFIG(maxConcurrentRequestsPerProcess)
@@ -1132,9 +1209,9 @@ DWORD CModuleConfiguration::GetGracefulShutdownTimeout(IHttpContext* ctx)
11321209
GETCONFIG(gracefulShutdownTimeout)
11331210
}
11341211

1135-
LPWSTR CModuleConfiguration::GetLogDirectoryNameSuffix(IHttpContext* ctx)
1212+
LPWSTR CModuleConfiguration::GetLogDirectory(IHttpContext* ctx)
11361213
{
1137-
GETCONFIG(logDirectoryNameSuffix)
1214+
GETCONFIG(logDirectory)
11381215
}
11391216

11401217
LPWSTR CModuleConfiguration::GetDebuggerPathSegment(IHttpContext* ctx)
@@ -1147,24 +1224,24 @@ DWORD CModuleConfiguration::GetDebuggerPathSegmentLength(IHttpContext* ctx)
11471224
GETCONFIG(debuggerPathSegmentLength)
11481225
}
11491226

1150-
DWORD CModuleConfiguration::GetLogFileFlushInterval(IHttpContext* ctx)
1227+
DWORD CModuleConfiguration::GetMaxTotalLogFileSizeInKB(IHttpContext* ctx)
11511228
{
1152-
GETCONFIG(logFileFlushInterval)
1229+
GETCONFIG(maxTotalLogFileSizeInKB)
11531230
}
11541231

11551232
DWORD CModuleConfiguration::GetMaxLogFileSizeInKB(IHttpContext* ctx)
11561233
{
11571234
GETCONFIG(maxLogFileSizeInKB)
11581235
}
11591236

1160-
BOOL CModuleConfiguration::GetLoggingEnabled(IHttpContext* ctx)
1237+
DWORD CModuleConfiguration::GetMaxLogFiles(IHttpContext* ctx)
11611238
{
1162-
GETCONFIG(loggingEnabled);
1239+
GETCONFIG(maxLogFiles)
11631240
}
11641241

1165-
BOOL CModuleConfiguration::GetAppendToExistingLog(IHttpContext* ctx)
1242+
BOOL CModuleConfiguration::GetLoggingEnabled(IHttpContext* ctx)
11661243
{
1167-
GETCONFIG(appendToExistingLog)
1244+
GETCONFIG(loggingEnabled);
11681245
}
11691246

11701247
BOOL CModuleConfiguration::GetDebuggingEnabled(IHttpContext* ctx)

Diff for: src/iisnode/cmoduleconfiguration.h

+8-6
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,21 @@ class CModuleConfiguration : public IHttpStoredContext
1010
DWORD asyncCompletionThreadCount;
1111
DWORD nodeProcessCountPerApplication;
1212
LPTSTR nodeProcessCommandLine;
13+
LPTSTR interceptor;
1314
DWORD maxConcurrentRequestsPerProcess;
1415
DWORD maxNamedPipeConnectionRetry;
1516
DWORD namedPipeConnectionRetryDelay;
1617
DWORD initialRequestBufferSize;
1718
DWORD maxRequestBufferSize;
1819
DWORD uncFileChangesPollingInterval;
1920
DWORD gracefulShutdownTimeout;
20-
LPWSTR logDirectoryNameSuffix;
21+
LPWSTR logDirectory;
2122
LPWSTR debuggerPathSegment;
2223
DWORD debuggerPathSegmentLength;
23-
DWORD logFileFlushInterval;
2424
DWORD maxLogFileSizeInKB;
25+
DWORD maxTotalLogFileSizeInKB;
26+
DWORD maxLogFiles;
2527
BOOL loggingEnabled;
26-
BOOL appendToExistingLog;
2728
BOOL debuggingEnabled;
2829
LPWSTR debugPortRange;
2930
DWORD debugPortStart;
@@ -70,20 +71,21 @@ class CModuleConfiguration : public IHttpStoredContext
7071
static DWORD GetAsyncCompletionThreadCount(IHttpContext* ctx);
7172
static DWORD GetNodeProcessCountPerApplication(IHttpContext* ctx);
7273
static LPCTSTR GetNodeProcessCommandLine(IHttpContext* ctx);
74+
static LPCTSTR GetInterceptor(IHttpContext* ctx);
7375
static DWORD GetMaxConcurrentRequestsPerProcess(IHttpContext* ctx);
7476
static DWORD GetMaxNamedPipeConnectionRetry(IHttpContext* ctx);
7577
static DWORD GetNamedPipeConnectionRetryDelay(IHttpContext* ctx);
7678
static DWORD GetInitialRequestBufferSize(IHttpContext* ctx);
7779
static DWORD GetMaxRequestBufferSize(IHttpContext* ctx);
7880
static DWORD GetUNCFileChangesPollingInterval(IHttpContext* ctx);
7981
static DWORD GetGracefulShutdownTimeout(IHttpContext* ctx);
80-
static LPWSTR GetLogDirectoryNameSuffix(IHttpContext* ctx);
82+
static LPWSTR GetLogDirectory(IHttpContext* ctx);
8183
static LPWSTR GetDebuggerPathSegment(IHttpContext* ctx);
8284
static DWORD GetDebuggerPathSegmentLength(IHttpContext* ctx);
83-
static DWORD GetLogFileFlushInterval(IHttpContext* ctx);
8485
static DWORD GetMaxLogFileSizeInKB(IHttpContext* ctx);
86+
static DWORD GetMaxTotalLogFileSizeInKB(IHttpContext* ctx);
87+
static DWORD GetMaxLogFiles(IHttpContext* ctx);
8588
static BOOL GetLoggingEnabled(IHttpContext* ctx);
86-
static BOOL GetAppendToExistingLog(IHttpContext* ctx);
8789
static BOOL GetDebuggingEnabled(IHttpContext* ctx);
8890
static HRESULT GetDebugPortRange(IHttpContext* ctx, DWORD* start, DWORD* end);
8991
static LPWSTR GetNodeEnv(IHttpContext* ctx);

0 commit comments

Comments
 (0)