summaryrefslogtreecommitdiff
path: root/python-flask-logify.spec
blob: c061804ed69ad28f49695fdce480774a2b2cfdb6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
%global _empty_manifest_terminate_build 0
Name:		python-Flask-Logify
Version:	2.4.5
Release:	1
Summary:	Logging configuration for flask application
License:	MIT
URL:		https://github.com/cs91chris/flask_logify
Source0:	https://mirrors.nju.edu.cn/pypi/web/packages/99/16/96e889fd2d907f62d3e208c648f113c3c8448648cd1e05a50c1367b9a299/Flask-Logify-2.4.5.tar.gz
BuildArch:	noarch

Requires:	python3-Flask
Requires:	python3-PyYAML

%description
|version|
Advanced Logging configuration for flask application based on yaml or json file.
See `logging.config <https://docs.python.org/3/library/logging.config.html>`__
NOTE: If you want to use ``flask_logify.handlers.FlaskSysLogHandler``
you must init this extension with an app context.
The dump of request or response are made by builders, there are two concrete implementations:
  1. ``LogTextBuilder``: message as plain text (configurable).
  2. ``LogJSONBuilder``: message as json format.
You can create your own builder by extending class ``LogBuilder``. In order to get the correct remote address
you can override ``LogBuilder.get_remote_address`` method or you can inject a function in ``LogBuilder`` constructor.
See example usage in `example/test.py <./flask_logify/example/test.py>`__.
``FlaskLogging`` as a decorator attribute with which you can disable log messages for a specific route,
passing a logging filter to it. For example you want disable log for health check endpoint.
See `example/text.py <./flask_logify/example/test.py>`__.
Quickstart
~~~~~~~~~~
Install ``flask_logify`` using ``pip``:
   $ pip install Flask-Logify
Example usage
^^^^^^^^^^^^^
An example of log file configuration is under example folder.
Only yaml or json format are supported.
    from flask import Flask
    from flask_logify import FlaskLogging
    app = Flask(__name__)
    app.config['LOG_FILE_CONF'] = 'log.yaml'
    app.config['LOG_LOGGER_NAME'] = 'flask-development'
    logging = FlaskLogging()
    with app.app_context():
        logging.init_app(app)
    app.run()
Go to http://127.0.0.1:5000/ and see log messages like configured
Configuration
^^^^^^^^^^^^^
Base configuration keys:
  1. ``LOGGING``: *(default: None)* dict logging configuration
  2. ``LOG_FILE_CONF``: *(default: None)* absolute path of configuration file (has priority on LOGGING)
  3. ``LOG_APP_NAME``: *(default: flask)* the ident of the record used by syslog
  4. ``LOG_LOGGER_NAME``: *(default: flask-development)* usually is {LOG_APP_NAME}-{FLASK_ENV}
  5. ``REQUEST_ID_HEADER``: *(default: X-Request-ID)* request id header key
  6. ``LOG_BUILDER``: *(default: text)* log builder implementation (text, json)
Text and JSON builder configuration keys:
  1. ``LOG_REQ_HEADERS``: *(default: [])* request headers to dump always
  2. ``LOG_RESP_HEADERS``: *(default: [])* response headers to dump always
  3. ``LOG_REQ_SKIP_DUMP``: *(default: not DEBUG)* if true dump of request body and headers are skipped
  4. ``LOG_RESP_SKIP_DUMP``: *(default: DEBUG)* if true dump of response body and headers are skipped
Text builder only:
  1. ``LOG_RESP_FORMAT``: *(default: "OUTGOING RESPONSE for {address} at {path}: {level} STATUS {status}{headers}{body}")*
     log message format for response
  2. ``LOG_REQ_FORMAT``: *(default: "INCOMING REQUEST: {address} {method} {scheme} {path}{headers}{body}")*
     log message format for request
License MIT

%package -n python3-Flask-Logify
Summary:	Logging configuration for flask application
Provides:	python-Flask-Logify
BuildRequires:	python3-devel
BuildRequires:	python3-setuptools
BuildRequires:	python3-pip
%description -n python3-Flask-Logify
|version|
Advanced Logging configuration for flask application based on yaml or json file.
See `logging.config <https://docs.python.org/3/library/logging.config.html>`__
NOTE: If you want to use ``flask_logify.handlers.FlaskSysLogHandler``
you must init this extension with an app context.
The dump of request or response are made by builders, there are two concrete implementations:
  1. ``LogTextBuilder``: message as plain text (configurable).
  2. ``LogJSONBuilder``: message as json format.
You can create your own builder by extending class ``LogBuilder``. In order to get the correct remote address
you can override ``LogBuilder.get_remote_address`` method or you can inject a function in ``LogBuilder`` constructor.
See example usage in `example/test.py <./flask_logify/example/test.py>`__.
``FlaskLogging`` as a decorator attribute with which you can disable log messages for a specific route,
passing a logging filter to it. For example you want disable log for health check endpoint.
See `example/text.py <./flask_logify/example/test.py>`__.
Quickstart
~~~~~~~~~~
Install ``flask_logify`` using ``pip``:
   $ pip install Flask-Logify
Example usage
^^^^^^^^^^^^^
An example of log file configuration is under example folder.
Only yaml or json format are supported.
    from flask import Flask
    from flask_logify import FlaskLogging
    app = Flask(__name__)
    app.config['LOG_FILE_CONF'] = 'log.yaml'
    app.config['LOG_LOGGER_NAME'] = 'flask-development'
    logging = FlaskLogging()
    with app.app_context():
        logging.init_app(app)
    app.run()
Go to http://127.0.0.1:5000/ and see log messages like configured
Configuration
^^^^^^^^^^^^^
Base configuration keys:
  1. ``LOGGING``: *(default: None)* dict logging configuration
  2. ``LOG_FILE_CONF``: *(default: None)* absolute path of configuration file (has priority on LOGGING)
  3. ``LOG_APP_NAME``: *(default: flask)* the ident of the record used by syslog
  4. ``LOG_LOGGER_NAME``: *(default: flask-development)* usually is {LOG_APP_NAME}-{FLASK_ENV}
  5. ``REQUEST_ID_HEADER``: *(default: X-Request-ID)* request id header key
  6. ``LOG_BUILDER``: *(default: text)* log builder implementation (text, json)
Text and JSON builder configuration keys:
  1. ``LOG_REQ_HEADERS``: *(default: [])* request headers to dump always
  2. ``LOG_RESP_HEADERS``: *(default: [])* response headers to dump always
  3. ``LOG_REQ_SKIP_DUMP``: *(default: not DEBUG)* if true dump of request body and headers are skipped
  4. ``LOG_RESP_SKIP_DUMP``: *(default: DEBUG)* if true dump of response body and headers are skipped
Text builder only:
  1. ``LOG_RESP_FORMAT``: *(default: "OUTGOING RESPONSE for {address} at {path}: {level} STATUS {status}{headers}{body}")*
     log message format for response
  2. ``LOG_REQ_FORMAT``: *(default: "INCOMING REQUEST: {address} {method} {scheme} {path}{headers}{body}")*
     log message format for request
License MIT

%package help
Summary:	Development documents and examples for Flask-Logify
Provides:	python3-Flask-Logify-doc
%description help
|version|
Advanced Logging configuration for flask application based on yaml or json file.
See `logging.config <https://docs.python.org/3/library/logging.config.html>`__
NOTE: If you want to use ``flask_logify.handlers.FlaskSysLogHandler``
you must init this extension with an app context.
The dump of request or response are made by builders, there are two concrete implementations:
  1. ``LogTextBuilder``: message as plain text (configurable).
  2. ``LogJSONBuilder``: message as json format.
You can create your own builder by extending class ``LogBuilder``. In order to get the correct remote address
you can override ``LogBuilder.get_remote_address`` method or you can inject a function in ``LogBuilder`` constructor.
See example usage in `example/test.py <./flask_logify/example/test.py>`__.
``FlaskLogging`` as a decorator attribute with which you can disable log messages for a specific route,
passing a logging filter to it. For example you want disable log for health check endpoint.
See `example/text.py <./flask_logify/example/test.py>`__.
Quickstart
~~~~~~~~~~
Install ``flask_logify`` using ``pip``:
   $ pip install Flask-Logify
Example usage
^^^^^^^^^^^^^
An example of log file configuration is under example folder.
Only yaml or json format are supported.
    from flask import Flask
    from flask_logify import FlaskLogging
    app = Flask(__name__)
    app.config['LOG_FILE_CONF'] = 'log.yaml'
    app.config['LOG_LOGGER_NAME'] = 'flask-development'
    logging = FlaskLogging()
    with app.app_context():
        logging.init_app(app)
    app.run()
Go to http://127.0.0.1:5000/ and see log messages like configured
Configuration
^^^^^^^^^^^^^
Base configuration keys:
  1. ``LOGGING``: *(default: None)* dict logging configuration
  2. ``LOG_FILE_CONF``: *(default: None)* absolute path of configuration file (has priority on LOGGING)
  3. ``LOG_APP_NAME``: *(default: flask)* the ident of the record used by syslog
  4. ``LOG_LOGGER_NAME``: *(default: flask-development)* usually is {LOG_APP_NAME}-{FLASK_ENV}
  5. ``REQUEST_ID_HEADER``: *(default: X-Request-ID)* request id header key
  6. ``LOG_BUILDER``: *(default: text)* log builder implementation (text, json)
Text and JSON builder configuration keys:
  1. ``LOG_REQ_HEADERS``: *(default: [])* request headers to dump always
  2. ``LOG_RESP_HEADERS``: *(default: [])* response headers to dump always
  3. ``LOG_REQ_SKIP_DUMP``: *(default: not DEBUG)* if true dump of request body and headers are skipped
  4. ``LOG_RESP_SKIP_DUMP``: *(default: DEBUG)* if true dump of response body and headers are skipped
Text builder only:
  1. ``LOG_RESP_FORMAT``: *(default: "OUTGOING RESPONSE for {address} at {path}: {level} STATUS {status}{headers}{body}")*
     log message format for response
  2. ``LOG_REQ_FORMAT``: *(default: "INCOMING REQUEST: {address} {method} {scheme} {path}{headers}{body}")*
     log message format for request
License MIT

%prep
%autosetup -n Flask-Logify-2.4.5

%build
%py3_build

%install
%py3_install
install -d -m755 %{buildroot}/%{_pkgdocdir}
if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
pushd %{buildroot}
if [ -d usr/lib ]; then
	find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
fi
if [ -d usr/lib64 ]; then
	find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
fi
if [ -d usr/bin ]; then
	find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
fi
if [ -d usr/sbin ]; then
	find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
fi
touch doclist.lst
if [ -d usr/share/man ]; then
	find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
fi
popd
mv %{buildroot}/filelist.lst .
mv %{buildroot}/doclist.lst .

%files -n python3-Flask-Logify -f filelist.lst
%dir %{python3_sitelib}/*

%files help -f doclist.lst
%{_docdir}/*

%changelog
* Wed May 31 2023 Python_Bot <Python_Bot@openeuler.org> - 2.4.5-1
- Package Spec generated