git://git.iain.cx/iain
/
nssm.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Enable on-demand rotation.
[nssm.git]
/
io.cpp
diff --git
a/io.cpp
b/io.cpp
index
2602dc2
..
79848e9
100644
(file)
--- a/
io.cpp
+++ b/
io.cpp
@@
-242,7
+242,7
@@
int get_output_handles(nssm_service_t *service, HKEY key, STARTUPINFO *si) {
\r
/* Try online rotation only if a size threshold is set. */
\r
logger_t *stdout_logger = 0;
\r
\r
/* Try online rotation only if a size threshold is set. */
\r
logger_t *stdout_logger = 0;
\r
- if (service->rotate_files && service->rotate_stdout_online
&& size.QuadPart
) {
\r
+ if (service->rotate_files && service->rotate_stdout_online) {
\r
stdout_logger = (logger_t *) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(logger_t));
\r
if (stdout_logger) {
\r
/* Pipe between application's stdout and our logging handle. */
\r
stdout_logger = (logger_t *) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(logger_t));
\r
if (stdout_logger) {
\r
/* Pipe between application's stdout and our logging handle. */
\r
@@
-256,6
+256,7
@@
int get_output_handles(nssm_service_t *service, HKEY key, STARTUPINFO *si) {
stdout_logger->write_handle = stdout_handle;
\r
stdout_logger->size = (__int64) size.QuadPart;
\r
stdout_logger->tid_ptr = &service->stdout_tid;
\r
stdout_logger->write_handle = stdout_handle;
\r
stdout_logger->size = (__int64) size.QuadPart;
\r
stdout_logger->tid_ptr = &service->stdout_tid;
\r
+ stdout_logger->rotate_online = &service->rotate_stdout_online;
\r
\r
/* Logging thread. */
\r
service->stdout_thread = create_logging_thread(stdout_logger);
\r
\r
/* Logging thread. */
\r
service->stdout_thread = create_logging_thread(stdout_logger);
\r
@@
-283,7
+284,7
@@
int get_output_handles(nssm_service_t *service, HKEY key, STARTUPINFO *si) {
log_event(EVENTLOG_ERROR_TYPE, NSSM_EVENT_DUPLICATEHANDLE_FAILED, NSSM_REG_STDOUT, error_string(GetLastError()), 0);
\r
return 4;
\r
}
\r
log_event(EVENTLOG_ERROR_TYPE, NSSM_EVENT_DUPLICATEHANDLE_FAILED, NSSM_REG_STDOUT, error_string(GetLastError()), 0);
\r
return 4;
\r
}
\r
- service->rotate_stdout_online =
false
;
\r
+ service->rotate_stdout_online =
NSSM_ROTATE_OFFLINE
;
\r
}
\r
\r
set_flags = true;
\r
}
\r
\r
set_flags = true;
\r
@@
-321,7
+322,7
@@
int get_output_handles(nssm_service_t *service, HKEY key, STARTUPINFO *si) {
\r
/* Try online rotation only if a size threshold is set. */
\r
logger_t *stderr_logger = 0;
\r
\r
/* Try online rotation only if a size threshold is set. */
\r
logger_t *stderr_logger = 0;
\r
- if (service->rotate_files && service->rotate_stderr_online
&& size.QuadPart
) {
\r
+ if (service->rotate_files && service->rotate_stderr_online) {
\r
stderr_logger = (logger_t *) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(logger_t));
\r
if (stderr_logger) {
\r
/* Pipe between application's stderr and our logging handle. */
\r
stderr_logger = (logger_t *) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(logger_t));
\r
if (stderr_logger) {
\r
/* Pipe between application's stderr and our logging handle. */
\r
@@
-335,6
+336,7
@@
int get_output_handles(nssm_service_t *service, HKEY key, STARTUPINFO *si) {
stderr_logger->write_handle = stderr_handle;
\r
stderr_logger->size = (__int64) size.QuadPart;
\r
stderr_logger->tid_ptr = &service->stderr_tid;
\r
stderr_logger->write_handle = stderr_handle;
\r
stderr_logger->size = (__int64) size.QuadPart;
\r
stderr_logger->tid_ptr = &service->stderr_tid;
\r
+ stderr_logger->rotate_online = &service->rotate_stderr_online;
\r
\r
/* Logging thread. */
\r
service->stderr_thread = create_logging_thread(stderr_logger);
\r
\r
/* Logging thread. */
\r
service->stderr_thread = create_logging_thread(stderr_logger);
\r
@@
-362,7
+364,7
@@
int get_output_handles(nssm_service_t *service, HKEY key, STARTUPINFO *si) {
log_event(EVENTLOG_ERROR_TYPE, NSSM_EVENT_DUPLICATEHANDLE_FAILED, NSSM_REG_STDERR, error_string(GetLastError()), 0);
\r
return 7;
\r
}
\r
log_event(EVENTLOG_ERROR_TYPE, NSSM_EVENT_DUPLICATEHANDLE_FAILED, NSSM_REG_STDERR, error_string(GetLastError()), 0);
\r
return 7;
\r
}
\r
- service->rotate_stderr_online =
false
;
\r
+ service->rotate_stderr_online =
NSSM_ROTATE_OFFLINE
;
\r
}
\r
}
\r
\r
}
\r
}
\r
\r
@@
-510,7
+512,7
@@
unsigned long WINAPI log_and_rotate(void *arg) {
}
\r
else if (ret) continue;
\r
\r
}
\r
else if (ret) continue;
\r
\r
- if (
size + (__int64) in >= logger->size
) {
\r
+ if (
*logger->rotate_online == NSSM_ROTATE_ONLINE_ASAP || (logger->size && size + (__int64) in >= logger->size)
) {
\r
/* Look for newline. */
\r
unsigned long i;
\r
for (i = 0; i < in; i++) {
\r
/* Look for newline. */
\r
unsigned long i;
\r
for (i = 0; i < in; i++) {
\r
@@
-527,6
+529,7
@@
unsigned long WINAPI log_and_rotate(void *arg) {
size += (__int64) out;
\r
\r
/* Rotate. */
\r
size += (__int64) out;
\r
\r
/* Rotate. */
\r
+ *logger->rotate_online = NSSM_ROTATE_ONLINE;
\r
TCHAR rotated[MAX_PATH];
\r
rotated_filename(logger->path, rotated, _countof(rotated), 0);
\r
\r
TCHAR rotated[MAX_PATH];
\r
rotated_filename(logger->path, rotated, _countof(rotated), 0);
\r
\r