moby/daemon
Cory Snider 49aa66b597 daemon/logger: rotate log files, never truncate
Truncating the current log file while a reader is still reading through
it results in log lines getting missed. In contrast, rotating the file
allows readers who have the file open can continue to read from it
undisturbed. Rotating frees up the file name for the logger to create a
new file in its place. This remains true even when max-file=1; the
current log file is "rotated" from its name without giving it a new one.

On POSIXy filesystem APIs, rotating the last file is straightforward:
unlink()ing a file name immediately deletes the name from the filesystem
and makes it available for reuse, even if processes have the file open
at the time. Windows on the other hand only makes the name available
for reuse once the file itself is deleted, which only happens when no
processes have it open. To reuse the file name while the file is still
in use, the file needs to be renamed. So that's what we have to do:
rotate the file to a temporary name before marking it for deletion.

Signed-off-by: Cory Snider <csnider@mirantis.com>
2022-05-19 15:22:22 -04:00
..
cluster Merge pull request #43524 from thaJeztah/daemon_fix_hosts_validation_step2 2022-05-13 02:42:40 +02:00
config daemon/config: remove uses of pointers for ints 2022-04-29 09:39:34 +02:00
events api/types/events: add "Type" type for event-type enum 2021-08-23 21:14:55 +02:00
exec Handle blocked I/O of exec'd processes 2019-06-21 12:02:15 -04:00
graphdriver overlay2: account for UserNS/userxattr in metacopy test 2022-05-17 06:58:50 -06:00
images daemon/config: remove uses of pointers for ints 2022-04-29 09:39:34 +02:00
initlayer daemon/initlayer: Init(): remove unused stub for Windows 2022-05-11 01:27:47 +02:00
links all: replace strings.Replace with strings.ReplaceAll 2022-05-09 19:45:40 +08:00
listeners Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
logger daemon/logger: rotate log files, never truncate 2022-05-19 15:22:22 -04:00
names Add canonical import comment 2018-02-05 16:51:57 -05:00
network Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
stats Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
testdata Remove libtrust dep from api 2017-09-06 12:05:19 -04:00
apparmor_default.go Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
apparmor_default_unsupported.go Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
archive.go daemon: rename variables that collide with imported package names 2020-04-14 17:22:23 +02:00
archive_tarcopyoptions.go Finish refactor of UID/GID usage to a new struct 2022-03-14 16:28:57 -04:00
archive_tarcopyoptions_unix.go Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
archive_tarcopyoptions_windows.go Add canonical import comment 2018-02-05 16:51:57 -05:00
archive_unix.go Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
archive_windows.go Add canonical import comment 2018-02-05 16:51:57 -05:00
attach.go Make it explicit raw|multiplexed stream implementation being used 2022-05-12 11:36:31 +02:00
auth.go daemon: unexport Daemon.ID and Daemon.RegistryService 2022-03-02 22:19:22 +01:00
changes.go daemon: add "isWindows" const 2019-10-17 23:49:43 +02:00
checkpoint.go refactor: move from io/ioutil to io and os package 2021-08-27 14:56:57 +08:00
cluster.go Fix libnetwork imports 2021-06-01 21:51:23 +00:00
commit.go daemon: add "isWindows" const 2019-10-17 23:49:43 +02:00
configs.go Merge configs/secrets in unix implementation 2018-02-16 11:25:14 -05:00
configs_linux.go Add canonical import comment 2018-02-05 16:51:57 -05:00
configs_unsupported.go Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
configs_windows.go Add canonical import comment 2018-02-05 16:51:57 -05:00
container.go Merge pull request #42616 from thaJeztah/migrate_pkg_signal 2021-07-26 10:47:28 -07:00
container_linux.go daemon: load and cache sysInfo on initialization 2022-01-12 18:28:15 +01:00
container_operations.go Fixup libnetwork lint errors 2021-06-01 23:48:32 +00:00
container_operations_unix.go daemon: killWithSignal, killPossiblyDeadProcess: accept syscall.Signal 2022-05-05 00:53:52 +02:00
container_operations_windows.go refactor: move from io/ioutil to io and os package 2021-08-27 14:56:57 +08:00
container_unix_test.go Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
container_windows.go daemon: fix capitalization of some functions 2020-04-14 17:22:19 +02:00
content.go daemon: rename some variables, import-aliases and receivers 2022-04-20 21:22:28 +02:00
create.go update uses of container.ContainerCreateCreatedBody to CreateResponse 2022-04-28 22:39:20 +02:00
create_test.go bump gotest.tools v3.0.1 for compatibility with Go 1.14 2020-02-11 00:06:42 +01:00
create_unix.go Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
create_windows.go daemon, oci: remove LCOW bits 2021-07-27 13:35:59 +02:00
daemon.go Remove mount spec backport 2022-05-13 23:14:43 +00:00
daemon_linux.go Fix libnetwork imports 2021-06-01 21:51:23 +00:00
daemon_linux_test.go refactor: move from io/ioutil to io and os package 2021-08-27 14:56:57 +08:00
daemon_test.go daemon: remove discovery inits 2022-01-06 18:28:21 +01:00
daemon_unix.go daemon: daemon.initNetworkController(): dont return the controller 2022-04-29 09:08:49 +02:00
daemon_unix_test.go daemon: remove discovery related tests 2022-01-06 18:28:10 +01:00
daemon_unsupported.go daemon: load and cache sysInfo on initialization 2022-01-12 18:28:15 +01:00
daemon_windows.go daemon: daemon.initNetworkController(): dont return the controller 2022-04-29 09:08:49 +02:00
daemon_windows_test.go Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
debugtrap_unix.go Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
debugtrap_unsupported.go Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
debugtrap_windows.go pkg/signal: move signal.DumpStacks() to a separate package 2021-07-15 18:09:43 +02:00
delete.go backend: add StopOptions to ContainerRestart and ContainerStop 2022-04-20 21:29:30 +02:00
delete_test.go refactor: move from io/ioutil to io and os package 2021-08-27 14:56:57 +08:00
dependency.go Bump swarmkit to v2 2022-04-21 17:33:07 -04:00
devices_linux.go Add DeviceRequests to HostConfig to support NVIDIA GPUs 2019-03-18 17:19:45 +00:00
disk_usage.go api/types: replace uses of deprecated types.Volume with volume.Volume 2022-04-21 19:50:59 +02:00
errors.go filters: lowercase error 2022-03-18 09:44:53 +01:00
events.go Bump swarmkit to v2 2022-04-21 17:33:07 -04:00
events_test.go daemon: rename variables that collide with imported package names 2020-04-14 17:22:23 +02:00
exec.go libcontainerd: SignalProcess(): accept syscall.Signal 2022-05-05 00:53:49 +02:00
exec_linux.go oci: inheritable capability set should be empty 2022-02-08 14:33:44 -08:00
exec_linux_test.go Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
exec_windows.go Windows: (WCOW) Generate OCI spec that remote runtime can escape 2019-03-12 18:41:55 -07:00
export.go Finish refactor of UID/GID usage to a new struct 2022-03-14 16:28:57 -04:00
health.go health: Start probe timeout after exec starts 2022-04-28 17:21:03 -04:00
health_test.go daemon: suppress logs in unit tests 2019-10-18 00:57:56 +02:00
id.go daemon: separate daemon ID from trust-key 2022-05-04 20:17:18 +02:00
info.go daemon: require storage-driver to be set if the driver is deprecated 2022-03-25 15:22:06 +01:00
info_unix.go version: add RootlessKit, slirp4netns, and VPNKit version 2022-03-15 15:44:42 +09:00
info_unix_test.go Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
info_windows.go Make cgroup namespaces configurable 2019-05-07 10:22:16 -07:00
inspect.go daemon: rename variables that collide with imported package names 2020-04-14 17:22:23 +02:00
inspect_linux.go daemon: rename variables that collide with imported package names 2020-04-14 17:22:23 +02:00
inspect_test.go bump gotest.tools v3.0.1 for compatibility with Go 1.14 2020-02-11 00:06:42 +01:00
inspect_windows.go Add canonical import comment 2018-02-05 16:51:57 -05:00
keys.go refactor: move from io/ioutil to io and os package 2021-08-27 14:56:57 +08:00
keys_unsupported.go Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
kill.go daemon: fix some minor nits 2022-05-05 11:27:59 +02:00
licensing.go Expose license status in Info (#37612) 2018-08-17 17:05:21 -07:00
licensing_test.go bump gotest.tools v3.0.1 for compatibility with Go 1.14 2020-02-11 00:06:42 +01:00
links.go Add canonical import comment 2018-02-05 16:51:57 -05:00
list.go daemon: var-declaration: should omit type bool (revive) 2021-06-10 13:03:45 +02:00
list_test.go filters: lowercase error 2022-03-18 09:44:53 +01:00
list_unix.go Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
list_windows.go Add canonical import comment 2018-02-05 16:51:57 -05:00
logdrivers_linux.go Support configuration of log cacher. 2020-02-19 17:02:34 -05:00
logdrivers_windows.go Support configuration of log cacher. 2020-02-19 17:02:34 -05:00
logs.go daemon: rename variables that collide with imported package names 2020-04-14 17:22:23 +02:00
logs_test.go Add canonical import comment 2018-02-05 16:51:57 -05:00
metrics.go health: Start probe timeout after exec starts 2022-04-28 17:21:03 -04:00
metrics_unix.go Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
metrics_unsupported.go Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
monitor.go Move container exit state to after cleanup. 2021-01-28 11:28:41 -08:00
mounts.go Extract volume interaction to a volumes service 2018-05-25 14:21:07 -04:00
names.go Entropy cannot be saved 2019-06-07 11:54:45 +01:00
network.go reformat "nolint" comments 2021-06-10 13:03:42 +02:00
network_windows.go Fix libnetwork imports 2021-06-01 21:51:23 +00:00
nvidia_linux.go goimports: fix imports 2019-09-18 12:56:54 +02:00
oci_linux.go daemon/linux: Set console size on creation 2022-05-19 07:57:27 +02:00
oci_linux_test.go Finish refactor of UID/GID usage to a new struct 2022-03-14 16:28:57 -04:00
oci_opts.go daemon/linux: Set console size on creation 2022-05-19 07:57:27 +02:00
oci_utils.go goimports: fix imports 2019-09-18 12:56:54 +02:00
oci_windows.go Implement :// separator for arbitrary Windows Device IDTypes 2022-03-27 13:26:47 +11:00
oci_windows_test.go Bump swarmkit to v2 2022-04-21 17:33:07 -04:00
pause.go daemon: rename variables that collide with imported package names 2020-04-14 17:22:23 +02:00
prune.go Fixup libnetwork lint errors 2021-06-01 23:48:32 +00:00
reload.go daemon/config: remove uses of pointers for ints 2022-04-29 09:39:34 +02:00
reload_test.go daemon: daemon.networkOptions(): don't pass Config as argument 2022-04-23 23:34:13 +02:00
reload_unix.go Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
reload_windows.go Add canonical import comment 2018-02-05 16:51:57 -05:00
rename.go Fix libnetwork imports 2021-06-01 21:51:23 +00:00
resize.go Merge pull request #38522 from cpuguy83/fix_timers 2019-06-07 13:16:46 +02:00
resize_test.go Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
restart.go backend: add StopOptions to ContainerRestart and ContainerStop 2022-04-20 21:29:30 +02:00
runtime_unix.go refactor: move from io/ioutil to io and os package 2021-08-27 14:56:57 +08:00
runtime_windows.go Add shim config for custom runtimes for plugins 2021-01-14 19:28:28 +00:00
seccomp_linux.go Remove "seccomp" build tag 2022-05-12 14:48:35 -07:00
seccomp_linux_test.go Remove "seccomp" build tag 2022-05-12 14:48:35 -07:00
seccomp_unsupported.go Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
secrets.go Add canonical import comment 2018-02-05 16:51:57 -05:00
secrets_linux.go Add canonical import comment 2018-02-05 16:51:57 -05:00
secrets_unsupported.go Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
secrets_windows.go Add canonical import comment 2018-02-05 16:51:57 -05:00
start.go volume/mounts: remove "containerOS" argument from NewParser (LCOW code) 2021-07-02 13:51:55 +02:00
start_unix.go Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
start_windows.go Windows CI: Add support for testing with containerd 2021-08-17 07:09:40 -07:00
stats.go Merge pull request #40478 from cpuguy83/dont-prime-the-stats 2020-04-16 20:57:06 +02:00
stats_collector.go Add canonical import comment 2018-02-05 16:51:57 -05:00
stats_unix.go Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
stats_windows.go Add canonical import comment 2018-02-05 16:51:57 -05:00
stop.go container: StopSignal(): return syscall.Signal 2022-05-05 00:53:53 +02:00
top_unix.go Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
top_unix_test.go Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
top_windows.go goimports: fix imports 2019-09-18 12:56:54 +02:00
trustkey.go Allow system.MkDirAll() to be used as drop-in for os.MkDirAll() 2019-08-08 15:05:49 +02:00
trustkey_test.go refactor: move from io/ioutil to io and os package 2021-08-27 14:56:57 +08:00
unpause.go daemon: rename variables that collide with imported package names 2020-04-14 17:22:23 +02:00
update.go volume/mounts: remove "containerOS" argument from NewParser (LCOW code) 2021-07-02 13:51:55 +02:00
update_linux.go goimports: fix imports 2019-09-18 12:56:54 +02:00
update_windows.go Windows: Experimental: Allow containerd for runtime 2019-03-12 18:41:55 -07:00
util_test.go libcontainerd: SignalProcess(): accept syscall.Signal 2022-05-05 00:53:49 +02:00
volumes.go Remove mount spec backport 2022-05-13 23:14:43 +00:00
volumes_linux.go Fix the several typos detected by github.com/client9/misspell 2018-08-09 00:45:00 +09:00
volumes_linux_test.go daemon: rename variables that collide with imported package names 2020-04-14 17:22:23 +02:00
volumes_unit_test.go volume/mounts: remove "containerOS" argument from NewParser (LCOW code) 2021-07-02 13:51:55 +02:00
volumes_unix.go Update to Go 1.17.0, and gofmt with Go 1.17 2021-08-24 23:33:27 +02:00
volumes_windows.go Add ADD/COPY --chown flag support to Windows 2018-08-13 21:59:11 -07:00
wait.go Switch from x/net/context -> context 2018-04-23 13:52:44 -07:00
workdir.go Add ADD/COPY --chown flag support to Windows 2018-08-13 21:59:11 -07:00