X-Git-Url: http://git.iain.cx/?a=blobdiff_plain;f=registry.cpp;h=1b85af588f55d160f29e40b31d145a9254836031;hb=62f28c55d444d846579159133dbe091809a2c08b;hp=93c034d285c41300a0c3654437872dbbe5a72ae5;hpb=64567097975b06d71d6602baf2df2d56f0525f2f;p=nssm.git diff --git a/registry.cpp b/registry.cpp index 93c034d..1b85af5 100644 --- a/registry.cpp +++ b/registry.cpp @@ -166,6 +166,8 @@ int create_parameters(nssm_service_t *service, bool editing) { if (service->stderr_copy_and_truncate) set_createfile_parameter(key, NSSM_REG_STDERR, NSSM_REG_STDIO_COPY_AND_TRUNCATE, 1); else if (editing) delete_createfile_parameter(key, NSSM_REG_STDERR, NSSM_REG_STDIO_COPY_AND_TRUNCATE); } + if (service->timestamp_log) set_number(key, NSSM_REG_TIMESTAMP_LOG, 1); + else if (editing) RegDeleteValue(key, NSSM_REG_TIMESTAMP_LOG); if (service->hook_share_output_handles) set_number(key, NSSM_REG_HOOK_SHARE_OUTPUT_HANDLES, 1); else if (editing) RegDeleteValue(key, NSSM_REG_HOOK_SHARE_OUTPUT_HANDLES); if (service->rotate_files) set_number(key, NSSM_REG_ROTATE, 1); @@ -828,9 +830,17 @@ int get_parameters(nssm_service_t *service, STARTUPINFO *si) { else service->rotate_stdout_online = service->rotate_stderr_online = false; } else service->rotate_stdout_online = service->rotate_stderr_online = false; + /* Log timestamping requires a logging thread.*/ + unsigned long timestamp_log; + if (get_number(key, NSSM_REG_TIMESTAMP_LOG, ×tamp_log, false) == 1) { + if (timestamp_log) service->timestamp_log = true; + else service->timestamp_log = false; + } + else service->timestamp_log = false; + /* Hook I/O sharing and online rotation need a pipe. */ - service->use_stdout_pipe = service->rotate_stdout_online || hook_share_output_handles; - service->use_stderr_pipe = service->rotate_stderr_online || hook_share_output_handles; + service->use_stdout_pipe = service->rotate_stdout_online || service->timestamp_log || hook_share_output_handles; + service->use_stderr_pipe = service->rotate_stderr_online || service->timestamp_log || hook_share_output_handles; if (get_number(key, NSSM_REG_ROTATE_SECONDS, &service->rotate_seconds, false) != 1) service->rotate_seconds = 0; if (get_number(key, NSSM_REG_ROTATE_BYTES_LOW, &service->rotate_bytes_low, false) != 1) service->rotate_bytes_low = 0; if (get_number(key, NSSM_REG_ROTATE_BYTES_HIGH, &service->rotate_bytes_high, false) != 1) service->rotate_bytes_high = 0;