mirror of
https://github.com/SebastianWendel/nixpkgs.git
synced 2024-09-21 12:59:04 +02:00
nixos/matrix-synapse: mergeable log configuration
Right now there's no trivial way to override parts of synapse's log config such as the log-level because the only thing that's changeable is the path to the log-file used by synapse and its workers. Now, there's a new option called `services.matrix-synapse.log` which contains the default log config as Nix attribute-set (except `handlers.journal.SYSLOG_IDENTIFIER`). It has default priority, so new things can be added like services.matrix-synapse.log = { my.extra.field = 23; } without discarding the rest. If desired, this can still be done via `lib.mkForce`. If the log configuration for a single worker or synapse, but not all workers should be changed, `services.matrix-synapse.settings.log_config` or `services.matrix-synapse.workers._name_.worker_log_config` can be used.
This commit is contained in:
parent
67252742c1
commit
cb67bb0335
|
@ -70,13 +70,12 @@ let
|
|||
inherit (cfg) plugins;
|
||||
};
|
||||
|
||||
logConfig = logName: {
|
||||
defaultCommonLogConfig = {
|
||||
version = 1;
|
||||
formatters.journal_fmt.format = "%(name)s: [%(request)s] %(message)s";
|
||||
handlers.journal = {
|
||||
class = "systemd.journal.JournalHandler";
|
||||
formatter = "journal_fmt";
|
||||
SYSLOG_IDENTIFIER = logName;
|
||||
};
|
||||
root = {
|
||||
level = "INFO";
|
||||
|
@ -84,33 +83,27 @@ let
|
|||
};
|
||||
disable_existing_loggers = false;
|
||||
};
|
||||
|
||||
defaultCommonLogConfigText = generators.toPretty { } defaultCommonLogConfig;
|
||||
|
||||
logConfigText = logName:
|
||||
let
|
||||
expr = ''
|
||||
{
|
||||
version = 1;
|
||||
formatters.journal_fmt.format = "%(name)s: [%(request)s] %(message)s";
|
||||
handlers.journal = {
|
||||
class = "systemd.journal.JournalHandler";
|
||||
formatter = "journal_fmt";
|
||||
SYSLOG_IDENTIFIER = "${logName}";
|
||||
};
|
||||
root = {
|
||||
level = "INFO";
|
||||
handlers = [ "journal" ];
|
||||
};
|
||||
disable_existing_loggers = false;
|
||||
};
|
||||
'';
|
||||
in
|
||||
lib.literalMD ''
|
||||
Path to a yaml file generated from this Nix expression:
|
||||
|
||||
```
|
||||
${expr}
|
||||
${generators.toPretty { } (
|
||||
recursiveUpdate defaultCommonLogConfig { handlers.journal.SYSLOG_IDENTIFIER = logName; }
|
||||
)}
|
||||
```
|
||||
'';
|
||||
genLogConfigFile = logName: format.generate "synapse-log-${logName}.yaml" (logConfig logName);
|
||||
|
||||
genLogConfigFile = logName: format.generate
|
||||
"synapse-log-${logName}.yaml"
|
||||
(cfg.log // optionalAttrs (cfg.log?handlers.journal) {
|
||||
handlers.journal = cfg.log.handlers.journal // {
|
||||
SYSLOG_IDENTIFIER = logName;
|
||||
};
|
||||
});
|
||||
in {
|
||||
|
||||
imports = [
|
||||
|
@ -394,6 +387,47 @@ in {
|
|||
'';
|
||||
};
|
||||
|
||||
log = mkOption {
|
||||
type = types.attrsOf format.type;
|
||||
defaultText = literalExpression defaultCommonLogConfigText;
|
||||
description = mdDoc ''
|
||||
Default configuration for the loggers used by `matrix-synapse` and its workers.
|
||||
The defaults are added with the default priority which means that
|
||||
these will be merged with additional declarations. For instance
|
||||
the log-level for synapse and its workers can be changed like this:
|
||||
|
||||
```nix
|
||||
{ lib, ... }: {
|
||||
services.matrix-synapse.log.root.level = lib.mkForce "WARNING";
|
||||
}
|
||||
```
|
||||
|
||||
And another field can be added like this:
|
||||
|
||||
```nix
|
||||
{
|
||||
services.matrix-synapse.log = {
|
||||
loggers."synapse.http.matrixfederationclient".level = "DEBUG";
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
Additionally, the field `handlers.journal.SYSLOG_IDENTIFIER` will be added to
|
||||
each log config, i.e.
|
||||
* `synapse` for `matrix-synapse.service`
|
||||
* `synapse-<worker name>` for `matrix-synapse-worker-<worker name>.service`
|
||||
|
||||
This is only done if this option has a `handlers.journal` field declared.
|
||||
|
||||
To discard all settings declared by this option for each worker and synapse,
|
||||
`lib.mkForce` can be used.
|
||||
|
||||
To discard all settings declared by this option for a single worker or synapse only,
|
||||
[](#opt-services.matrix-synapse.workers._name_.worker_log_config) or
|
||||
[](#opt-services.matrix-synapse.settings.log_config) can be used.
|
||||
'';
|
||||
};
|
||||
|
||||
settings = mkOption {
|
||||
default = { };
|
||||
description = mdDoc ''
|
||||
|
@ -1008,6 +1042,8 @@ in {
|
|||
# default them, so they are additive
|
||||
services.matrix-synapse.extras = defaultExtras;
|
||||
|
||||
services.matrix-synapse.log = defaultCommonLogConfig;
|
||||
|
||||
users.users.matrix-synapse = {
|
||||
group = "matrix-synapse";
|
||||
home = cfg.dataDir;
|
||||
|
|
Loading…
Reference in a new issue