You are viewing a plain text version of this content. The canonical link for it is here.
Posted to websh-cvs@tcl.apache.org by ro...@apache.org on 2005/10/27 16:54:05 UTC
svn commit: r328886 - in /tcl/websh/trunk/src: generic/log.c generic/log.h
generic/logutl.c tests/log.test
Author: ronnie
Date: Thu Oct 27 07:53:54 2005
New Revision: 328886
URL: http://svn.apache.org/viewcvs?rev=328886&view=rev
Log:
- refactored log filters and levels to reside in an array so that names
can be reused after deletion needed for mod_websh, because
otherwise, we run out of names sooner or later
- adapted and added tests accordingly
Modified:
tcl/websh/trunk/src/generic/log.c
tcl/websh/trunk/src/generic/log.h
tcl/websh/trunk/src/generic/logutl.c
tcl/websh/trunk/src/tests/log.test
Modified: tcl/websh/trunk/src/generic/log.c
URL: http://svn.apache.org/viewcvs/tcl/websh/trunk/src/generic/log.c?rev=328886&r1=328885&r2=328886&view=diff
==============================================================================
--- tcl/websh/trunk/src/generic/log.c (original)
+++ tcl/websh/trunk/src/generic/log.c Thu Oct 27 07:53:54 2005
@@ -137,10 +137,14 @@
if (logData != NULL) {
- HashUtlAllocInit(logData->listOfFilters, TCL_STRING_KEYS);
- logData->filterCnt = 0;
- HashUtlAllocInit(logData->listOfDests, TCL_STRING_KEYS);
- logData->destCnt = 0;
+ /* initialize list of destination and levels */
+ logData->listOfFilters = NULL;
+ logData->filterSize = 0;
+ logData->listOfDests = NULL;
+ logData->destSize = 0;
+ insertIntoFilterList(logData, (LogLevel *) NULL);
+ insertIntoDestList(logData, (LogDest *) NULL);
+
HashUtlAllocInit(logData->listOfPlugIns, TCL_STRING_KEYS);
logData->logSubst = 0;
}
@@ -163,24 +167,33 @@
/* ..................................................................... */
if (logData->listOfFilters != NULL) {
- resetHashTableWithContent(logData->listOfFilters, TCL_STRING_KEYS,
- destroyLogLevel, interp);
-
- HashUtlDelFree(logData->listOfFilters);
- logData->listOfFilters = NULL;
+ int i;
+ LogLevel ** logLevels = logData->listOfFilters;
+ for (i = 0; i < logData->filterSize; i++) {
+ if (logLevels[i] != NULL) {
+ destroyLogLevel(logLevels[i], interp);
+ }
+ }
+ WebFreeIfNotNull(logData->listOfFilters);
+ logData->filterSize = 0;
}
- /* ..................................................................... */
+ /* ................................................................ */
if (logData->listOfDests != NULL) {
- resetHashTableWithContent(logData->listOfDests, TCL_STRING_KEYS,
- destroyLogDest, interp);
- HashUtlDelFree(logData->listOfDests);
- logData->listOfDests = NULL;
+ int i;
+ LogDest ** logDests = logData->listOfDests;
+ for (i = 0; i < logData->destSize; i++) {
+ if (logDests[i] != NULL) {
+ destroyLogDest(logDests[i], interp);
+ }
+ }
+ WebFreeIfNotNull(logData->listOfDests);
+ logData->destSize = 0;
}
- /* ..................................................................... */
+ /* ................................................................ */
if (logData->listOfPlugIns != NULL) {
resetHashTableWithContent(logData->listOfPlugIns, TCL_STRING_KEYS,
@@ -238,9 +251,9 @@
}
/* ----------------------------------------------------------------------------
- * createLogDestName --
+ * createLogName --
* ------------------------------------------------------------------------- */
-char *createLogDestName(char *prefix, int cnt)
+char *createLogName(char *prefix, int cnt)
{
char str[64]; /* more than enough space for logDest%d */
@@ -262,6 +275,76 @@
}
/* ----------------------------------------------------------------------------
+ * getIndextFromLogName --
+ * ------------------------------------------------------------------------- */
+int getIndexFromLogName(char *format, char *string) {
+ int i = -1;
+ int index = -1;
+ if (sscanf(string, format, &index) == 1) {
+ i = index;
+ }
+ return i;
+}
+
+/* ----------------------------------------------------------------------------
+ * insertIntoDestList --
+ * ------------------------------------------------------------------------- */
+char * insertIntoDestList(LogData *logData, LogDest *logDest) {
+ int i;
+ LogDest ** logDests = logData->listOfDests;
+ for (i = 0; i < logData->destSize; i++) {
+ if (logDests[i] == NULL) {
+ logDests[i] = logDest;
+ return createLogName(LOG_DEST_PREFIX, i);
+ }
+ }
+ {
+ /* list too small: increase size */
+ LogDest ** newLogDests = (LogDest **) Tcl_Alloc((LOG_LIST_INITIAL_SIZE + logData->destSize) * sizeof(LogDest *));
+ if (newLogDests == NULL) {return NULL;}
+ /* copy old list to new list */
+ memcpy(newLogDests, logDests, logData->destSize * sizeof(LogDest *));
+ /* init new entries to NULL */
+ for (i = 0; i < LOG_LIST_INITIAL_SIZE; i++) {
+ newLogDests[i + logData->destSize] = NULL;
+ }
+ logData->listOfDests = newLogDests;
+ logData->destSize += LOG_LIST_INITIAL_SIZE;
+ WebFreeIfNotNull(logDests);
+ return insertIntoDestList(logData, logDest);
+ }
+}
+
+/* ----------------------------------------------------------------------------
+ * insertIntoFilterList --
+ * ------------------------------------------------------------------------- */
+char * insertIntoFilterList(LogData *logData, LogLevel *logLevel) {
+ int i;
+ LogLevel ** logLevels = logData->listOfFilters;
+ for (i = 0; i < logData->filterSize; i++) {
+ if (logLevels[i] == NULL) {
+ logLevels[i] = logLevel;
+ return createLogName(LOG_FILTER_PREFIX, i);
+ }
+ }
+ {
+ /* list too small: increase size */
+ LogLevel ** newLogLevels = (LogLevel **) Tcl_Alloc((LOG_LIST_INITIAL_SIZE + logData->filterSize) * sizeof(LogLevel *));
+ if (newLogLevels == NULL) {return NULL;}
+ /* copy old list to new list */
+ memcpy(newLogLevels, logLevels, logData->filterSize * sizeof(LogLevel *));
+ /* init new entries to NULL */
+ for (i = 0; i < LOG_LIST_INITIAL_SIZE; i++) {
+ newLogLevels[i + logData->filterSize] = NULL;
+ }
+ logData->listOfFilters = newLogLevels;
+ logData->filterSize += LOG_LIST_INITIAL_SIZE;
+ WebFreeIfNotNull(logLevels);
+ return insertIntoFilterList(logData, logLevel);
+ }
+}
+
+/* ----------------------------------------------------------------------------
* createLogDest --
* ------------------------------------------------------------------------- */
LogDest *createLogDest(void)
@@ -502,14 +585,6 @@
}
/* ------------------------------------------------------------------------
- * create name
- * --------------------------------------------------------------------- */
- name = createLogDestName("logdest", logData->destCnt);
- WebAssertData(interp, name,
- "cannot create name for log destination",
- TCL_ERROR);
-
- /* ------------------------------------------------------------------------
* call constructor
* --------------------------------------------------------------------- */
if ((logPlugInData =
@@ -539,43 +614,38 @@
logDest->plugInData = logPlugInData;
logDest->maxCharInMsg = maxCharInMsg;
- /* ------------------------------------------------------------------------
+ /* ----------------------------------------------------------
* and add to list
- * --------------------------------------------------------------------- */
- if (appendToHashTable
- (logData->listOfDests, name,
- (ClientData) logDest) == TCL_ERROR) {
- Tcl_SetResult(interp, "cannot append \"", NULL);
- Tcl_AppendResult(interp, name, "\" to list", NULL);
+ * ---------------------------------------------------------- */
+
+ name = insertIntoDestList(logData, logDest);
+ if (name == NULL) {
+ Tcl_SetResult(interp, "cannot append new log destination to list", NULL);
destroyLogDest(logDest, interp);
destroyLogLevel(logLevel, NULL);
- WebFreeIfNotNull(name);
WebFreeIfNotNull(format);
return TCL_ERROR;
}
- logData->destCnt++;
Tcl_SetResult(interp, name, Tcl_Free);
-
return TCL_OK;
}
case NAMES:{
- HashTableIterator iterator;
Tcl_ResetResult(interp);
if (logData->listOfDests != NULL) {
-
- assignIteratorToHashTable(logData->listOfDests, &iterator);
-
- while (nextFromHashIterator(&iterator) != TCL_ERROR) {
- Tcl_AppendElement(interp, keyOfCurrent(&iterator));
+ int i;
+ LogDest ** logDests = logData->listOfDests;
+ for (i = 0; i < logData->destSize; i++) {
+ if (logDests[i] != NULL) {
+ Tcl_AppendElement(interp, createLogName(LOG_DEST_PREFIX, i));
}
+ }
}
return TCL_OK;
}
case LEVELS:{
- HashTableIterator iterator;
int namesIsFirst = TCL_OK;
LogDest *logDest = NULL;
@@ -583,22 +653,25 @@
if (logData->listOfDests != NULL) {
- assignIteratorToHashTable(logData->listOfDests, &iterator);
+ int i;
+ LogDest ** logDests = logData->listOfDests;
+ for (i = 0; i < logData->destSize; i++) {
+ if (logDests[i] != NULL) {
- while (nextFromHashIterator(&iterator) != TCL_ERROR) {
if (namesIsFirst == TCL_ERROR)
Tcl_AppendResult(interp, "\n", NULL);
else
namesIsFirst = TCL_ERROR;
- logDest = (LogDest *) valueOfCurrent(&iterator);
+ logDest = logDests[i];
Tcl_AppendResult(interp,
- keyOfCurrent(&iterator), " ",
+ createLogName(LOG_DEST_PREFIX, i), " ",
logDest->filter->facility, ".",
getSeverityName(logDest->filter->
minSeverity), "-",
getSeverityName(logDest->filter->
maxSeverity), NULL);
}
+ }
}
return TCL_OK;
}
@@ -611,29 +684,35 @@
/* web::loglogDest delete logDest1 */
switch (objc) {
- case 3:
- logDest =
- (LogDest *) removeFromHashTable(logData->listOfDests,
- Tcl_GetString(objv[2]));
- if (logDest == NULL) {
- Tcl_SetResult(interp, "no such log destination \"", NULL);
- Tcl_AppendResult(interp, Tcl_GetString(objv[2]), "\"",
+ case 3: {
+ int inx = getIndexFromLogName(LOG_DEST_PREFIX"%d", Tcl_GetString(objv[2]));
+ LogDest ** logDests = logData->listOfDests;
+ if (inx < 0
+ || inx >= logData->destSize
+ || logDests[inx] == NULL) {
+ Tcl_SetResult(interp, "no such log destination \"", NULL);
+ Tcl_AppendResult(interp, Tcl_GetString(objv[2]), "\"",
NULL);
- return TCL_ERROR;
- }
- destroyLogDest(logDest, interp);
- return TCL_OK;
+ return TCL_ERROR;
+ }
+ destroyLogDest(logDests[inx], interp);
+ logDests[inx] = NULL;
+ return TCL_OK;
+ break;
+ }
case 2:
- /* ----------------------------------------------------------------------
+ /* --------------------------------------------------------
* no argument --> resets the list
- * ------------------------------------------------------------------- */
+ * -------------------------------------------------------- */
if (logData->listOfDests != NULL) {
- if (resetHashTableWithContent(logData->listOfDests,
- TCL_STRING_KEYS,
- destroyLogDest,
- interp) == TCL_OK) {
- logData->destCnt = 0;
+ int i;
+ LogDest ** logDests = logData->listOfDests;
+ for (i = 0; i < logData->destSize; i++) {
+ if (logDests[i] != NULL) {
+ destroyLogDest(logDests[i], interp);
+ logDests[i] = NULL;
}
+ }
}
return TCL_OK;
break;
@@ -711,13 +790,6 @@
}
/* ------------------------------------------------------------------------
- * name it
- * --------------------------------------------------------------------- */
- name = createLogDestName("logfilter", logData->filterCnt);
- WebAssertData(interp, name, "cannot create name for log filter",
- TCL_ERROR);
-
- /* ------------------------------------------------------------------------
* parse level
* --------------------------------------------------------------------- */
logLevel =
@@ -730,32 +802,28 @@
/* ------------------------------------------------------------------------
* and add to list
* --------------------------------------------------------------------- */
- if (appendToHashTable(logData->listOfFilters, name,
- (ClientData) logLevel) == TCL_ERROR) {
- Tcl_SetResult(interp, "cannot append \"", NULL);
- Tcl_AppendResult(interp, name, "\" to list", NULL);
+ name = insertIntoFilterList(logData, logLevel);
+ if (name == NULL) {
+ Tcl_SetResult(interp, "cannot append new log filter to list", NULL);
destroyLogLevel(logLevel, NULL);
- WebFreeIfNotNull(name);
return TCL_ERROR;
}
- logData->filterCnt++;
Tcl_SetResult(interp, name, Tcl_Free);
return TCL_OK;
break;
}
case NAMES:{
- HashTableIterator iterator;
-
Tcl_ResetResult(interp);
if (logData->listOfFilters != NULL) {
-
- assignIteratorToHashTable(logData->listOfFilters, &iterator);
-
- while (nextFromHashIterator(&iterator) != TCL_ERROR) {
- Tcl_AppendElement(interp, keyOfCurrent(&iterator));
+ int i;
+ LogLevel **logLevels = logData->listOfFilters;
+ for (i = 0; i < logData->filterSize; i++) {
+ if (logLevels[i] != NULL) {
+ Tcl_AppendElement(interp, createLogName(LOG_FILTER_PREFIX, i));
}
+ }
}
return TCL_OK;
break;
@@ -770,22 +838,25 @@
Tcl_SetResult(interp, "", NULL);
if (logData->listOfFilters != NULL) {
+ int i;
+ LogLevel ** logLevels = logData->listOfFilters;
+ for (i = 0; i < logData->filterSize; i++) {
+ if (logLevels[i] != NULL) {
- assignIteratorToHashTable(logData->listOfFilters, &iterator);
-
- while (nextFromHashIterator(&iterator) != TCL_ERROR) {
if (namesIsFirst == TCL_ERROR)
Tcl_AppendResult(interp, "\n", NULL);
else
namesIsFirst = TCL_ERROR;
- logLevel = (LogLevel *) valueOfCurrent(&iterator);
- Tcl_AppendResult(interp, keyOfCurrent(&iterator), " ",
+ logLevel = logLevels[i];
+ Tcl_AppendResult(interp,
+ createLogName(LOG_FILTER_PREFIX, i), " ",
logLevel->facility, ".",
getSeverityName(logLevel->minSeverity),
"-",
getSeverityName(logLevel->maxSeverity),
NULL);
}
+ }
}
return TCL_OK;
break;
@@ -799,41 +870,44 @@
/* web::logfilter delete logLevel1 */
switch (objc) {
- case 3:
- logLevel =
- (LogLevel *) removeFromHashTable(logData->listOfFilters,
- Tcl_GetString(objv[2]));
- if (logLevel == NULL) {
- Tcl_SetResult(interp, "no such log filter \"", NULL);
- Tcl_AppendResult(interp, Tcl_GetString(objv[2]), "\"",
+ case 3: {
+ int inx = getIndexFromLogName(LOG_FILTER_PREFIX"%d", Tcl_GetString(objv[2]));
+ LogLevel ** logLevels = logData->listOfFilters;
+ if (inx < 0
+ || inx >= logData->filterSize
+ || logLevels[inx] == NULL) {
+ Tcl_SetResult(interp, "no such log filter \"", NULL);
+ Tcl_AppendResult(interp, Tcl_GetString(objv[2]), "\"",
NULL);
- return TCL_ERROR;
- }
- destroyLogLevel(logLevel, NULL);
- return TCL_OK;
- break;
+ return TCL_ERROR;
+ }
+ destroyLogLevel(logLevels[inx], interp);
+ logLevels[inx] = NULL;
+ return TCL_OK;
+ break;
+ }
case 2:
- /* ----------------------------------------------------------------------
+ /* -----------------------------------------------------
* no argument --> resets the list
- * ------------------------------------------------------------------- */
+ * ----------------------------------------------------- */
if (logData->listOfFilters != NULL) {
- if (resetHashTableWithContent(logData->listOfFilters,
- TCL_STRING_KEYS,
- destroyLogLevel,
- NULL) == TCL_OK) {
- logData->filterCnt = 0;
- return TCL_OK;
+ int i;
+ LogLevel ** logLevels = logData->listOfFilters;
+ for (i = 0; i < logData->filterSize; i++) {
+ if (logLevels[i] != NULL) {
+ destroyLogLevel(logLevels[i], interp);
+ logLevels[i] = NULL;
}
+ }
}
- Tcl_SetResult(interp, "error resetting filter list", NULL);
- return TCL_ERROR;
+ return TCL_OK;
break;
default:
Tcl_WrongNumArgs(interp, 1, objv, "delete ?filtername?");
return TCL_ERROR;
}
break;
- }
+ }
default:
return TCL_OK;
}
Modified: tcl/websh/trunk/src/generic/log.h
URL: http://svn.apache.org/viewcvs/tcl/websh/trunk/src/generic/log.h?rev=328886&r1=328885&r2=328886&view=diff
==============================================================================
--- tcl/websh/trunk/src/generic/log.h (original)
+++ tcl/websh/trunk/src/generic/log.h Thu Oct 27 07:53:54 2005
@@ -66,10 +66,6 @@
#define WEB_LOG_SUBCMD_LEVELS "levels"
/* ----------------------------------------------------------------------------
- * Switches (like "string -binary")
- * ------------------------------------------------------------------------- */
-
-/* ----------------------------------------------------------------------------
* Parameters (like "web::cmdurl -cmd aCommand", where there is an argument
* ------------------------------------------------------------------------- */
#define WEB_LOG_PARAM_FORMAT "-format"
@@ -86,6 +82,12 @@
#define WEB_LOG_USAGE_LOGDEST_ADD \
"add ?options? level type ?type-specific-arguments ...?"
+/* --------------------------------------------------------------------------
+ * other
+ * ------------------------------------------------------------------------*/
+#define LOG_LIST_INITIAL_SIZE 10
+#define LOG_FILTER_PREFIX "logfilter"
+#define LOG_DEST_PREFIX "logdest"
/* ----------------------------------------------------------------------------
* list of possible categories
@@ -157,16 +159,14 @@
* ------------------------------------------------------------------------- */
typedef struct LogData
{
- Tcl_HashTable *listOfFilters;
- int filterCnt; /* actual count of filters */
- int filterInx; /* highest index in use */
- Tcl_HashTable *listOfDests;
- int destCnt; /* actual count of destinations */
- int destInx; /* highest index in use */
- Tcl_HashTable *listOfPlugIns;
- int logSubst; /* 1: subst log message, 0: don't (default 1) */
- /* needed so that global settings can be accessed */
- RequestData * requestData;
+ LogLevel **listOfFilters;
+ int filterSize; /* size of filter list */
+ LogDest **listOfDests;
+ int destSize; /* site of destination list */
+ Tcl_HashTable *listOfPlugIns;
+ int logSubst; /* 1: subst log message, 0: don't (default 0) */
+ /* needed so that global settings can be accessed */
+ RequestData * requestData;
}
LogData;
@@ -198,7 +198,7 @@
Tcl_Obj *formatMessage(LogLevel * level, char *fmt, long maxCharInMsg,
Tcl_Obj * msg);
int doesPass(LogLevel * level, LogLevel * filter);
-int doesPassFilters(LogLevel * logLevel, Tcl_HashTable * hash);
+int doesPassFilters(LogLevel * logLevel, LogLevel ** logLevels, int size);
int logImpl(Tcl_Interp * interp, LogData * logData,
char *levelStr, Tcl_Obj * msg);
int webLog(Tcl_Interp * interp, char *levelStr, char *msg);
@@ -206,6 +206,8 @@
void sendMsgToDestList(Tcl_Interp * interp,
LogData * logData, LogLevel * level, Tcl_Obj * msg);
+char * insertIntoDestList(LogData *logData, LogDest *logDest);
+char * insertIntoFilterList(LogData *logData, LogLevel *logLevel);
/* ----------------------------------------------------------------------------
* Logging
Modified: tcl/websh/trunk/src/generic/logutl.c
URL: http://svn.apache.org/viewcvs/tcl/websh/trunk/src/generic/logutl.c?rev=328886&r1=328885&r2=328886&view=diff
==============================================================================
--- tcl/websh/trunk/src/generic/logutl.c (original)
+++ tcl/websh/trunk/src/generic/logutl.c Thu Oct 27 07:53:54 2005
@@ -97,7 +97,7 @@
/* ------------------------------------------------------------------
* does level pass the filters --> send to dests
* --------------------------------------------------------------- */
- if (doesPassFilters(logLevel, logData->listOfFilters) == TCL_OK)
+ if (doesPassFilters(logLevel, logData->listOfFilters, logData->filterSize) == TCL_OK)
sendMsgToDestList(interp, logData, logLevel, msg);
destroyLogLevel(logLevel, NULL);
@@ -119,18 +119,17 @@
Tcl_Obj *subst = NULL;
int res = 0;
int err = 0;
+ int i = 0;
- Tcl_HashTable *hash = logData->listOfDests;
+ LogDest **logDests = logData->listOfDests;
- if ((interp == NULL) || (hash == NULL) ||
+ if ((interp == NULL) || (logDests == NULL) ||
(logLevel == NULL) || (msg == NULL))
return;
- assignIteratorToHashTable(hash, &iterator);
+ for (i = 0; i < logData->destSize; i++) {
- while (nextFromHashIterator(&iterator) != TCL_ERROR) {
-
- logDest = (LogDest *) valueOfCurrent(&iterator);
+ logDest = logDests[i];
if (logDest != NULL) {
if ((logDest->plugIn != NULL) &&
@@ -143,7 +142,6 @@
/* ------------------------------------------------------------------
* do we need to eval the message ?
* --------------------------------------------------------------- */
-
if (logData->logSubst) {
/* message already evaluated ? */
@@ -380,20 +378,15 @@
/* ----------------------------------------------------------------------------
* doesPassFilters -- search through all filters and see if level passes one
* ------------------------------------------------------------------------- */
-int doesPassFilters(LogLevel * logLevel, Tcl_HashTable * hash)
+int doesPassFilters(LogLevel * logLevel, LogLevel ** logLevels, int size)
{
+ int i;
- HashTableIterator iterator;
- LogLevel *filter;
-
- if ((logLevel == NULL) || (hash == NULL))
+ if ((logLevel == NULL) || (logLevels == NULL))
return TCL_ERROR;
- assignIteratorToHashTable(hash, &iterator);
- while (nextFromHashIterator(&iterator) != TCL_ERROR) {
-
- filter = (LogLevel *) valueOfCurrent(&iterator);
- if (doesPass(logLevel, filter) == TCL_OK)
+ for (i = 0; i < size; i++) {
+ if (doesPass(logLevel, logLevels[i]) == TCL_OK)
return TCL_OK;
}
Modified: tcl/websh/trunk/src/tests/log.test
URL: http://svn.apache.org/viewcvs/tcl/websh/trunk/src/tests/log.test?rev=328886&r1=328885&r2=328886&view=diff
==============================================================================
--- tcl/websh/trunk/src/tests/log.test (original)
+++ tcl/websh/trunk/src/tests/log.test Thu Oct 27 07:53:54 2005
@@ -66,7 +66,7 @@
set res [web::logfilter names]
} {}
-test log-1.5 {websh3_weblog: different warn levels} {
+test log-1.5 {websh3_weblog: different warn levels and more than initial size list} {
web::logfilter delete
web::logfilter add testAlert.alert
web::logfilter add testError.error
@@ -88,8 +88,18 @@
web::logfilter add testWarning.warning
web::logfilter add testInfo.info
web::logfilter add testDebug.debug
+ web::logfilter add testDebug.debug
+ web::logfilter add testDebug.debug
set res [web::logfilter levels]
-} {logfilter8 testInfo.info-info
+} {logfilter0 testAlert.alert-alert
+logfilter1 testError.error-error
+logfilter2 testWarning.warning-warning
+logfilter3 testInfo.info-info
+logfilter4 testDebug.debug-debug
+logfilter5 testAlert.alert-alert
+logfilter6 testError.error-error
+logfilter7 testWarning.warning-warning
+logfilter8 testInfo.info-info
logfilter9 testDebug.debug-debug
logfilter10 testAlert.alert-alert
logfilter11 testError.error-error
@@ -99,16 +109,10 @@
logfilter15 testAlert.alert-alert
logfilter16 testError.error-error
logfilter17 testWarning.warning-warning
-logfilter0 testAlert.alert-alert
logfilter18 testInfo.info-info
-logfilter1 testError.error-error
logfilter19 testDebug.debug-debug
-logfilter2 testWarning.warning-warning
-logfilter3 testInfo.info-info
-logfilter4 testDebug.debug-debug
-logfilter5 testAlert.alert-alert
-logfilter6 testError.error-error
-logfilter7 testWarning.warning-warning}
+logfilter20 testDebug.debug-debug
+logfilter21 testDebug.debug-debug}
test log-1.6 {websh3_weblog: special syntax for message levels} {
web::logfilter delete
@@ -118,11 +122,11 @@
web::logfilter add test*.info
web::logfilter add websh2.alert-error
set res [web::logfilter levels]
-} {logfilter4 websh2.alert-error
-logfilter0 *.alert-debug
+} {logfilter0 *.alert-debug
logfilter1 *.alert-debug
logfilter2 *.alert-debug
-logfilter3 test*.info-info}
+logfilter3 test*.info-info
+logfilter4 websh2.alert-error}
test log-1.7 {websh3_weblog: see if we get the id} {
web::logfilter delete
@@ -397,14 +401,30 @@
web::log debug test
append res \n [web::logdest levels]
-} {logdest2 *.alert-debug
-logdest3 *.alert-debug
-logdest0 *.alert-debug
+} {logdest0 *.alert-debug
logdest1 *.alert-debug
logdest2 *.alert-debug
logdest3 *.alert-debug
logdest0 *.alert-debug
-logdest1 *.alert-debug}
+logdest1 *.alert-debug
+logdest2 *.alert-debug
+logdest3 *.alert-debug}
+
+test log-4.1 {fill up log filters} {
+ set res {}
+ web::logfilter delete
+ web::logfilter add *.-debug
+ web::logfilter add *.-debug
+ web::logfilter add *.-debug
+ lappend res [web::logfilter names]
+ web::logfilter delete logfilter1
+ lappend res [web::logfilter names]
+ web::logfilter add *.-error
+ lappend res [web::logfilter names]
+ lappend res [web::logfilter levels]
+} {{logfilter0 logfilter1 logfilter2} {logfilter0 logfilter2} {logfilter0 logfilter1 logfilter2} {logfilter0 *.alert-debug
+logfilter1 *.alert-error
+logfilter2 *.alert-debug}}
# cleanup
::tcltest::cleanupTests
---------------------------------------------------------------------
To unsubscribe, e-mail: websh-cvs-unsubscribe@tcl.apache.org
For additional commands, e-mail: websh-cvs-help@tcl.apache.org