if (service->stderr_copy_and_truncate) set_createfile_parameter(key, NSSM_REG_STDERR, NSSM_REG_STDIO_COPY_AND_TRUNCATE, 1);\r
else if (editing) delete_createfile_parameter(key, NSSM_REG_STDERR, NSSM_REG_STDIO_COPY_AND_TRUNCATE);\r
}\r
+ if (service->timestamp_log) set_number(key, NSSM_REG_TIMESTAMP_LOG, 1);\r
+ else if (editing) RegDeleteValue(key, NSSM_REG_TIMESTAMP_LOG);\r
if (service->hook_share_output_handles) set_number(key, NSSM_REG_HOOK_SHARE_OUTPUT_HANDLES, 1);\r
else if (editing) RegDeleteValue(key, NSSM_REG_HOOK_SHARE_OUTPUT_HANDLES);\r
if (service->rotate_files) set_number(key, NSSM_REG_ROTATE, 1);\r
if (! ok) *buffer = default_value;\r
}\r
\r
+/* Open the key of the service itself Services\<service_name>. */\r
HKEY open_service_registry(const TCHAR *service_name, REGSAM sam, bool must_exist) {\r
/* Get registry */\r
TCHAR registry[KEY_LENGTH];\r
return open_registry_key(registry, sam, must_exist);\r
}\r
\r
+/* Open a subkey of the service Services\<service_name>\<sub>. */\r
long open_registry(const TCHAR *service_name, const TCHAR *sub, REGSAM sam, HKEY *key, bool must_exist) {\r
/* Get registry */\r
TCHAR registry[KEY_LENGTH];\r
else service->rotate_stdout_online = service->rotate_stderr_online = false;\r
}\r
else service->rotate_stdout_online = service->rotate_stderr_online = false;\r
+ /* Log timestamping requires a logging thread.*/\r
+ unsigned long timestamp_log;\r
+ if (get_number(key, NSSM_REG_TIMESTAMP_LOG, ×tamp_log, false) == 1) {\r
+ if (timestamp_log) service->timestamp_log = true;\r
+ else service->timestamp_log = false;\r
+ }\r
+ else service->timestamp_log = false;\r
+\r
/* Hook I/O sharing and online rotation need a pipe. */\r
- service->use_stdout_pipe = service->rotate_stdout_online || hook_share_output_handles;\r
- service->use_stderr_pipe = service->rotate_stderr_online || hook_share_output_handles;\r
+ service->use_stdout_pipe = service->rotate_stdout_online || service->timestamp_log || hook_share_output_handles;\r
+ service->use_stderr_pipe = service->rotate_stderr_online || service->timestamp_log || hook_share_output_handles;\r
if (get_number(key, NSSM_REG_ROTATE_SECONDS, &service->rotate_seconds, false) != 1) service->rotate_seconds = 0;\r
if (get_number(key, NSSM_REG_ROTATE_BYTES_LOW, &service->rotate_bytes_low, false) != 1) service->rotate_bytes_low = 0;\r
if (get_number(key, NSSM_REG_ROTATE_BYTES_HIGH, &service->rotate_bytes_high, false) != 1) service->rotate_bytes_high = 0;\r