Add syslog template per output file

Change-Id: Iad68aacf156be66732a2777ace3cc3756d5e46ca
diff --git a/README.rst b/README.rst
index 697eedb..7c014b0 100644
--- a/README.rst
+++ b/README.rst
@@ -71,6 +71,21 @@
               umask: 0022
               stop_processing: true
 
+Custom templates
+================
+
+It is possible to define a specific syslog template per output file instead of
+using the default one.
+
+.. code-block:: yaml
+
+    rsyslog:
+        output:
+          file:
+           /var/log/your-app.log:
+              template: ""%syslogtag:1:32%%msg:::sp-if-no-1st-sp%%msg%\\n""
+              filter: "if $programname startswith 'your-app' then"
+
 Support metadata
 ================
 
diff --git a/rsyslog/files/rsyslog.default.conf b/rsyslog/files/rsyslog.default.conf
index dd02b5d..ff7f917 100644
--- a/rsyslog/files/rsyslog.default.conf
+++ b/rsyslog/files/rsyslog.default.conf
@@ -53,6 +53,9 @@
 {%- else -%}
 {%- do file_groups.other.update({name: config}) -%}
 {%- endif -%}
+{%- if config.template is defined %}
+$Template {{ name|replace('/', '_') }}, "{{ config.template }}"
+{%- endif -%}
 {%- endfor -%}
 
 {%- macro rsyslog_output_file(files) -%}
@@ -69,7 +72,7 @@
 {% if config.umask is defined -%}
 $Umask {{ config['umask'] }}
 {% endif -%}
-{{ config['filter'] }}     {% if config.sync == true %}-{% endif %}{{ name }}
+{{ config['filter'] }}     {% if config.sync == true %}-{% endif %}{{ name }}{%if config.template is defined %};{{ name|replace('/', '_') }}{% endif %}
 {%- if config.get('stop_processing', False) %}
 &stop
 {%- endif %}