From ed80433813e2b43b2593d59b9f031a135d294968 Mon Sep 17 00:00:00 2001 From: Ludovic Cartier Date: Fri, 10 Oct 2025 15:21:40 +0200 Subject: [PATCH] logs - add the possibility to override slowlog and errors.log in pool configuration --- tasks/fpm_pools.yml | 52 +++++++++++++++++++++++++++++++++- templates/php-fpm.logrotate.j2 | 2 ++ templates/pool.conf.j2 | 8 ++++-- 3 files changed, 59 insertions(+), 3 deletions(-) diff --git a/tasks/fpm_pools.yml b/tasks/fpm_pools.yml index 9c74260..399c54d 100644 --- a/tasks/fpm_pools.yml +++ b/tasks/fpm_pools.yml @@ -1,7 +1,7 @@ --- - name: php | create php log directories for pools file: - path: "/var/log/php/{{ item.0.name }}/{{ item.1.version }}" + path: "/var/log/php/{{ item.1.version }}/{{ item.0.name }}" state: directory owner: "{{ item.0.user | default('www-data') }}" group: "{{ item.0.group | default('www-data') }}" @@ -23,6 +23,56 @@ notify: - restart php-fpm services +- name: php | ensure custom slowlog directory exists (if overridden) + file: + path: "{{ (item.0.slowlog_path | default('/var/log/php/' ~ item.1.version ~ '/' ~ item.0.name ~ '/php-slow.log')) | dirname }}" + state: directory + owner: "{{ item.0.user | default('www-data') }}" + group: "{{ item.0.group | default('www-data') }}" + mode: '0755' + recurse: yes + loop: "{{ php_pools | subelements('php_versions') }}" + when: + - php_pools is defined and php_pools | length > 0 + - item.0.slowlog_path is not sameas(false) + +- name: php | ensure custom error_log directory exists (if overridden) + file: + path: "{{ (item.0.error_log_path | default('/var/log/php/' ~ item.1.version ~ '/' ~ item.0.name ~ '/php-errors.log')) | dirname }}" + state: directory + owner: "{{ item.0.user | default('www-data') }}" + group: "{{ item.0.group | default('www-data') }}" + mode: '0755' + recurse: yes + loop: "{{ php_pools | subelements('php_versions') }}" + when: + - php_pools is defined and php_pools | length > 0 + - item.0.error_log_path is not sameas(false) + +- name: php | ensure error_log file exists with proper ownership + file: + path: "{{ item.0.error_log_path | default('/var/log/php/' ~ item.1.version ~ '/' ~ item.0.name ~ '/php-errors.log') }}" + state: touch + owner: "{{ item.0.user | default('www-data') }}" + group: "{{ item.0.group | default('www-data') }}" + mode: '0640' + loop: "{{ php_pools | subelements('php_versions') }}" + when: + - php_pools is defined and php_pools | length > 0 + - item.0.error_log_path is not sameas(false) + +- name: php | ensure slowlog file exists with proper ownership + file: + path: "{{ item.0.slowlog_path | default('/var/log/php/' ~ item.1.version ~ '/' ~ item.0.name ~ '/php-slow.log') }}" + state: touch + owner: "{{ item.0.user | default('www-data') }}" + group: "{{ item.0.group | default('www-data') }}" + mode: '0640' + loop: "{{ php_pools | subelements('php_versions') }}" + when: + - php_pools is defined and php_pools | length > 0 + - item.0.slowlog_path is not sameas(false) + - name: php | remove default www pool if requested file: path: "/etc/php/{{ item.version }}/fpm/pool.d/www.conf" diff --git a/templates/php-fpm.logrotate.j2 b/templates/php-fpm.logrotate.j2 index ea53379..2033743 100644 --- a/templates/php-fpm.logrotate.j2 +++ b/templates/php-fpm.logrotate.j2 @@ -13,6 +13,8 @@ notifempty sharedscripts su root adm +/var/log/php/*/*-slow.log +/var/log/php/*/*-errors.log /var/log/php/*/*/php-slow.log /var/log/php/*/*/php-errors.log { diff --git a/templates/pool.conf.j2 b/templates/pool.conf.j2 index 7006e46..0c23dd3 100644 --- a/templates/pool.conf.j2 +++ b/templates/pool.conf.j2 @@ -21,8 +21,10 @@ pm.status_path = /status ping.path = /ping ping.response = pong +{% if item.0.slowlog_path is not sameas(false) %} request_slowlog_timeout = {{ item.0.request_slowlog_timeout | default('30s') }} -slowlog = /var/log/php/{{ item.0.name }}/{{ item.1.version }}/php-slow.log +slowlog = {{ item.0.slowlog_path | default('/var/log/php/' ~ item.1.version ~ '/' ~ item.0.name ~ '/php-slow.log') }} +{% endif %} request_terminate_timeout = {{ item.0.request_terminate_timeout | default('60s') }} rlimit_files = {{ item.0.rlimit_files | default(65536) }} @@ -33,7 +35,9 @@ security.limit_extensions = .php ;; PHP FLAGS and VALUES php_admin_flag[display_errors] = {{ item.0.admin_flag_display_errors | default('Off') }} php_admin_flag[log_errors] = {{ item.0.admin_flag_log_errors | default('On') }} -php_admin_value[error_log] = /var/log/php/{{ item.0.name }}/{{ item.1.version }}/php-errors.log +{% if item.0.error_log_path is not sameas(false) %} +php_admin_value[error_log] = {{ item.0.error_log_path | default('/var/log/php/' ~ item.1.version ~ '/' ~ item.0.name ~ '/php-errors.log') }} +{% endif %} php_admin_value[error_reporting] = {{ item.0.admin_value_error_reporting | default('E_ALL & ~E_NOTICE') }} php_admin_value[memory_limit] = {{ item.0.admin_value_memory_limit | default('64M') }} php_admin_value[upload_max_filesize] = {{ item.0.admin_value_upload_max_filesize | default('16M') }}