From d34f26c31984ecdc07e6dc7e80dbfa5c1ef7c11f Mon Sep 17 00:00:00 2001 From: Takashi Kajinami Date: Fri, 26 Aug 2022 16:53:21 +0900 Subject: [PATCH] Add Apache WSGI logging parameters for pipe/syslog Add parameters for advanced logging configurations in Apache to support piped logging and support for syslog (via mod_syslog available in Apache >= 2.5.0) Co-Authored-By: Andy Botting Change-Id: If07cac9bc41d173baeadbefb4dad3612c32ee369 --- manifests/wsgi/apache.pp | 26 +++++- ...pd-logs-piped-syslog-c1720a5f8f11114d.yaml | 6 ++ spec/classes/zaqar_wsgi_apache_spec.rb | 79 +++++++++++++++++-- 3 files changed, 102 insertions(+), 9 deletions(-) create mode 100644 releasenotes/notes/httpd-logs-piped-syslog-c1720a5f8f11114d.yaml diff --git a/manifests/wsgi/apache.pp b/manifests/wsgi/apache.pp index 8cd707e..a3afdf3 100644 --- a/manifests/wsgi/apache.pp +++ b/manifests/wsgi/apache.pp @@ -70,6 +70,14 @@ # The log file name for the virtualhost. # Optional. Defaults to undef. # +# [*access_log_pipe*] +# Specifies a pipe where Apache sends access logs for the virtualhost. +# Optional. Defaults to undef. +# +# [*access_log_syslog*] +# Sends the virtualhost access log messages to syslog. +# Optional. Defaults to undef. +# # [*access_log_format*] # The log format for the virtualhost. # Optional. Defaults to undef. @@ -78,6 +86,14 @@ # The error log file name for the virtualhost. # Optional. Defaults to undef. # +# [*error_log_pipe*] +# Specifies a pipe where Apache sends error logs for the virtualhost. +# Optional. Defaults to undef. +# +# [*error_log_syslog*] +# Sends the virtualhost error log messages to syslog. +# Optional. Defaults to undef. +# # [*custom_wsgi_process_options*] # (optional) gives you the oportunity to add custom process options or to # overwrite the default options for the WSGI main process. @@ -122,8 +138,12 @@ class zaqar::wsgi::apache ( $threads = 1, $priority = 10, $access_log_file = undef, + $access_log_pipe = undef, + $access_log_syslog = undef, $access_log_format = undef, $error_log_file = undef, + $error_log_pipe = undef, + $error_log_syslog = undef, $custom_wsgi_process_options = {}, $headers = undef, $request_headers = undef, @@ -161,9 +181,13 @@ class zaqar::wsgi::apache ( headers => $headers, request_headers => $request_headers, vhost_custom_fragment => 'WSGICallableObject app', + custom_wsgi_process_options => $custom_wsgi_process_options, access_log_file => $access_log_file, + access_log_pipe => $access_log_pipe, + access_log_syslog => $access_log_syslog, access_log_format => $access_log_format, error_log_file => $error_log_file, - custom_wsgi_process_options => $custom_wsgi_process_options, + error_log_pipe => $error_log_pipe, + error_log_syslog => $error_log_syslog, } } diff --git a/releasenotes/notes/httpd-logs-piped-syslog-c1720a5f8f11114d.yaml b/releasenotes/notes/httpd-logs-piped-syslog-c1720a5f8f11114d.yaml new file mode 100644 index 0000000..07cadc9 --- /dev/null +++ b/releasenotes/notes/httpd-logs-piped-syslog-c1720a5f8f11114d.yaml @@ -0,0 +1,6 @@ +--- +features: + - | + Added parameters for advanced configuration of httpd access and error log + destinations including piped logging and syslog (see `mod_syslog`). Note + that mod_syslog requires Apache2 >= 2.5.0. diff --git a/spec/classes/zaqar_wsgi_apache_spec.rb b/spec/classes/zaqar_wsgi_apache_spec.rb index 89be2de..a185682 100644 --- a/spec/classes/zaqar_wsgi_apache_spec.rb +++ b/spec/classes/zaqar_wsgi_apache_spec.rb @@ -20,9 +20,14 @@ describe 'zaqar::wsgi::apache' do :wsgi_script_dir => platform_params[:wsgi_script_path], :wsgi_script_file => 'zaqar-server', :wsgi_script_source => platform_params[:wsgi_script_source], - :access_log_file => nil, - :access_log_format => nil, :custom_wsgi_process_options => {}, + :access_log_file => nil, + :access_log_pipe => nil, + :access_log_syslog => nil, + :access_log_format => nil, + :error_log_file => nil, + :error_log_pipe => nil, + :error_log_syslog => nil, )} end @@ -35,9 +40,6 @@ describe 'zaqar::wsgi::apache' do :ssl => true, :wsgi_process_display_name => 'zaqar-server', :workers => 37, - :access_log_file => '/var/log/httpd/access_log', - :access_log_format => 'some format', - :error_log_file => '/var/log/httpd/error_log', :custom_wsgi_process_options => { 'python_path' => '/my/python/path', }, @@ -67,9 +69,70 @@ describe 'zaqar::wsgi::apache' do :custom_wsgi_process_options => { 'python_path' => '/my/python/path', }, - :access_log_file => '/var/log/httpd/access_log', - :access_log_format => 'some format', - :error_log_file => '/var/log/httpd/error_log', + )} + end + + context 'with custom access logging' do + let :params do + { + :access_log_format => 'foo', + :access_log_syslog => 'syslog:local0', + :error_log_syslog => 'syslog:local1', + } + end + + it { should contain_openstacklib__wsgi__apache('zaqar_wsgi').with( + :access_log_format => params[:access_log_format], + :access_log_syslog => params[:access_log_syslog], + :error_log_syslog => params[:error_log_syslog], + )} + end + + context 'with access_log_file' do + let :params do + { + :access_log_file => '/path/to/file', + } + end + + it { should contain_openstacklib__wsgi__apache('zaqar_wsgi').with( + :access_log_file => params[:access_log_file], + )} + end + + context 'with access_log_pipe' do + let :params do + { + :access_log_pipe => 'pipe', + } + end + + it { should contain_openstacklib__wsgi__apache('zaqar_wsgi').with( + :access_log_pipe => params[:access_log_pipe], + )} + end + + context 'with error_log_file' do + let :params do + { + :error_log_file => '/path/to/file', + } + end + + it { should contain_openstacklib__wsgi__apache('zaqar_wsgi').with( + :error_log_file => params[:error_log_file], + )} + end + + context 'with error_log_pipe' do + let :params do + { + :error_log_pipe => 'pipe', + } + end + + it { should contain_openstacklib__wsgi__apache('zaqar_wsgi').with( + :error_log_pipe => params[:error_log_pipe], )} end end