Skip to content

$logger.getLoggers

Description

Retourne le détail de tous les loggers définis sur l'instance. La valeur de retour est un map dont la clé est un nom de logger et la valeur est le log level du logger en question.

Syntaxe

$logger.getLoggers( [ options ] )

Paramètres

options map

Options d'extraction des loggers. Les options reconnues sont:

format string

Format de sortie. Les formats disponibles sont:

  • map: Sortie sous forme de map dans lequel la clé est le nom du logger et la valeur son niveau de log.. C'est le format par défaut.
  • tree: Sortie sous forme de map dans lequel les noms de logger sont décomposés de façon à former un arbre. Par exemple le nom de logger ch.epilogic.ewt.actions.EwtAction sera décomposé en éléments ch, epilogic, ewt, actions et EwtAction structurés de façon hiérarchique. La valeur de la branche final EwtAction reprend le niveau de log actuel. Voir exemple 2 ci-dessous.
  • tree-opt: Format quasi équivalent au tree, à la différence que les noms de clés sont optimisés. Ainsi par exemple ch.epilogic.ewt n'est pas décomposé car ces élément ne possèdent chacun qu'un seul fils. Voir exemple 3 ci-dessous.

Retour

Map énumérant tous les loggers de l'instance et leur log level actuel.

Exemple 1

Extrait la liste des loggers sous forme de map simple.

var loggers = $logger.getLoggers();

// énumère les entrées du map (triées selon les noms de logger)
for (var key : $array.sort($map.keys(loggers))) {
    $logger.println(key & "\t" & loggers[key]);
}

La fonction affiche les traces suivantes:

ch.epilogic.ewt.actions.EwtAction       debug
ch.epilogic.ewt.actions.EwtActionFactory        debug
ch.epilogic.ewt.actions.EwtCommand      debug
ch.epilogic.ewt.application.EwtApplication      debug
ch.epilogic.ewt.application.databaseschema.EwtDatabaseSchema    debug
ch.epilogic.ewt.application.databaseschema.EwtDatabaseSchemaColumn      debug
ch.epilogic.ewt.application.descript.EwtDescriptCloneable       debug
ch.epilogic.ewt.application.descript.EwtDescriptField   debug
ch.epilogic.ewt.application.descript.EwtDescriptGroup   debug
ch.epilogic.ewt.application.descript.EwtDescriptModel   debug
ch.epilogic.ewt.application.descript.properties.EwtDescriptPropertyElement debug
...

Exemple 2

Variante qui demande une sortie sous forme d'arbre.

var json = $json.toJson($logger.getLoggers({ format: "tree" }));

L'appel ci-dessus construit un objet json semblable à celui-ci (ici mis en forme et abrégé pour des questions de lisibilité)

{
    "ch": {
        "epilogic": {
            "ewt": {
                "scheduler": {
                    "EwtScheduler": "debug"
                },
                "core": {
                    "EwtUserAgentSession": "debug",
                    "EwtSnowflakeId": "debug",
                    "EwtUserAgentThread": "debug",
                    "EwtSession": "debug",
                    "EwtMainInstance": "trace",
                    "EwtThread": "debug",
                    "EwtUserAgentSessionTable": "debug"
                },
                "database": {
                    "impl": {
                        "EwtDatabaseSQLite": "debug"
                    },
                    "EwtDatabaseEngine": "debug",
                    "EwtDatabaseConnectionPool": "debug"
                },
                "application": {
                    "EwtApplication": "debug",
                    "document": {
                        "context": {
                            "EwtDocumentContextGroup": "debug",
                            "EwtDocumentContextField": "debug",
                            "EwtDocumentContextTuple": "debug",
                            "EwtDocumentContextDocument": "debug"
                        }
                    },
                    ...
                },
                ...
            }
        }
    }
}

Exemple 3

Variante qui demande une sortie sous forme d'arbre optimisé.

var json = $json.toJson($logger.getLoggers({ format: "tree-opt" }));

L'appel ci-dessus construit un objet json semblable à celui-ci (ici mis en forme et abrégé pour des questions de lisibilité)

{
    "ch.epilogic.ewt": {
        "scheduler.EwtScheduler": "debug",
        "core": {
            "EwtUserAgentSession": "debug",
            "EwtSnowflakeId": "debug",
            "EwtUserAgentThread": "debug",
            "EwtSession": "debug",
            "EwtMainInstance": "trace",
            "EwtThread": "debug",
            "EwtUserAgentSessionTable": "debug"
        },
        "database": {
            "EwtDatabaseEngine": "debug",
            "impl.EwtDatabaseSQLite": "debug",
            "EwtDatabaseConnectionPool": "debug"
        },
        "application": {
            "EwtApplication": "debug",
            "document.context": {
                "EwtDocumentContextGroup": "debug",
                "EwtDocumentContextField": "debug",
                "EwtDocumentContextTuple": "debug",
                "EwtDocumentContextDocument": "debug"
            },
            ...
        },
        ...
    }
}