Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
4ca0038
[REF] fastapi_log: Extract common features to `api_log`
SirPyTech Apr 15, 2025
f9b857f
[IMP] api_log: Hide sensitive headers
SirPyTech Apr 28, 2025
7f83203
[IMP] api_log: Add collection of logs
SirPyTech Jun 25, 2025
c7f1214
[IMP] api_log: Inject Log record identifier
SirPyTech Aug 21, 2025
8afac07
[FIX] api_log: Name of empty log entry
SirPyTech Mar 19, 2026
736448b
[FIX] api_log: Log readonly exception
SirPyTech Mar 19, 2026
bc61821
[IMP] api_log: pre-commit execution
SirPyTech Mar 26, 2026
da3210d
[MIG] api_log: Migration to 17.0
SirPyTech Mar 26, 2026
08aa235
[ADD] api_log_mail: Notify user about logged exceptions
SirPyTech Jun 25, 2025
99b0566
[IMP] api_log_mail: pre-commit execution
SirPyTech Mar 26, 2026
ee45ea0
[MIG] api_log_mail: Migration to 17.0
SirPyTech Mar 26, 2026
8304160
[ADD] fastapi_log
paradoxxxzero Jul 15, 2025
0015a1e
[REF] fastapi_log: Extract common features to `api_log`
SirPyTech Apr 15, 2025
77e6c47
[FIX] fastapi_log: Manage multi-slash endpoints
SirPyTech Apr 28, 2025
79d2eab
[IMP] fastapi_log: Adapt to log collection
SirPyTech Jun 25, 2025
32cfbf9
[IMP] fastapi_log: Use dedicated cursor for logs
SirPyTech Sep 9, 2025
1d43e18
[IMP] fastapi_log: In tests, check Log identifier in response
SirPyTech Oct 20, 2025
f9f041b
[IMP] fastapi_log: pre-commit execution
SirPyTech Mar 26, 2026
93422fc
[MIG] fastapi_log: Migration to 17.0
SirPyTech Mar 26, 2026
2d23d9b
[ADD] fastapi_log_mail
SirPyTech Apr 22, 2025
d670411
[IMP] fastapi_log_mail: Adapt to log collection
SirPyTech Jun 25, 2025
356b108
[IMP] fastapi_log_mail: Use dedicated cursor in tests
SirPyTech Sep 9, 2025
16ec3bd
[IMP] fastapi_log_mail: pre-commit execution
SirPyTech Mar 26, 2026
c85b244
[MIG] fastapi_log_mail: Migration to 17.0
SirPyTech Mar 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
93 changes: 93 additions & 0 deletions api_log/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
=======
API Log
=======

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:a1948d1ff8b66338522f1c1a2988d5ab8b0a7ff97fcbe9589879bd67b30719ce
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Frest--framework-lightgray.png?logo=github
:target: https://github.com/OCA/rest-framework/tree/17.0/api_log
:alt: OCA/rest-framework
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/rest-framework-17-0/rest-framework-17-0-api_log
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/rest-framework&target_branch=17.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

This module allows to store request and response logs for any API.

When a response is logged, the header ``API_LOG_ENTRY_ID`` is injected
in the response header. This header stores the identifier of the log
record produced from the response.

**Table of contents**

.. contents::
:local:

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/rest-framework/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/rest-framework/issues/new?body=module:%20api_log%0Aversion:%2017.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

Credits
=======

Authors
-------

* Akretion

Contributors
------------

- Florian Mounier florian.mounier@akretion.com
- Guewen Baconnier guewen.baconnier@camptocamp.com
- Simone Orsi simahawk@gmail.com
- `PyTech <https://www.pytech.it>`__:

- Simone Rubino <simone.rubino@pytech.it>

Maintainers
-----------

This module is maintained by the OCA.

.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org

OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.

.. |maintainer-paradoxxxzero| image:: https://github.com/paradoxxxzero.png?size=40px
:target: https://github.com/paradoxxxzero
:alt: paradoxxxzero

Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:

|maintainer-paradoxxxzero|

This module is part of the `OCA/rest-framework <https://github.com/OCA/rest-framework/tree/17.0/api_log>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
1 change: 1 addition & 0 deletions api_log/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
20 changes: 20 additions & 0 deletions api_log/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Copyright 2025 Akretion (http://www.akretion.com).
# @author Florian Mounier <florian.mounier@akretion.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

{
"name": "API Log",
"version": "17.0.1.0.0",
"author": "Akretion, Odoo Community Association (OCA)",
"license": "AGPL-3",
"summary": "Log API requests in database",
"category": "Tools",
"depends": ["web"],
"website": "https://github.com/OCA/rest-framework",
"data": [
"security/res_groups.xml",
"security/ir_model_access.xml",
"views/api_log_views.xml",
],
"maintainers": ["paradoxxxzero"],
}
246 changes: 246 additions & 0 deletions api_log/i18n/api_log.pot
Original file line number Diff line number Diff line change
@@ -0,0 +1,246 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * api_log
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"

#. module: api_log
#: model:ir.actions.act_window,name:api_log.api_log_action
#: model:ir.ui.menu,name:api_log.menu_api_log
msgid "API Log"
msgstr ""

#. module: api_log
#: model:res.groups,name:api_log.group_api_log
msgid "API Log Access"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__collection_id
#: model_terms:ir.ui.view,arch_db:api_log.api_log_view_search
msgid "Collection"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__collection_model
msgid "Collection Model"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__collection_ref
msgid "Collection Ref"
msgstr ""

#. module: api_log
#: model:ir.model,name:api_log.model_api_log_collection_mixin
msgid "Collection of API logs"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__create_uid
msgid "Created by"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__create_date
msgid "Created on"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__display_name
msgid "Display Name"
msgstr ""

#. module: api_log
#: model_terms:ir.ui.view,arch_db:api_log.api_log_view_search
msgid "Error"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__id
msgid "ID"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log____last_update
msgid "Last Modified on"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__write_uid
msgid "Last Updated by"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__write_date
msgid "Last Updated on"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log_collection_mixin__log_requests
msgid "Log Requests"
msgstr ""

#. module: api_log
#: model:ir.model,name:api_log.model_api_log
msgid "Log for API"
msgstr ""

#. module: api_log
#: model:ir.model.fields,help:api_log.field_api_log_collection_mixin__log_requests
msgid "Log requests in database."
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log_collection_mixin__log_ids
msgid "Logs"
msgstr ""

#. module: api_log
#: model_terms:ir.ui.view,arch_db:api_log.api_log_view_search
msgid "Method"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__name
msgid "Name"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__referrer
msgid "Referrer"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__request_body
msgid "Request Body"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__request_b64
msgid "Request Content"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__request_content_length
msgid "Request Content Length"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__request_content_type
msgid "Request Content Type"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__request_date
msgid "Request Date"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__request_headers
msgid "Request Headers"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__request_headers_preview
msgid "Request Headers Preview"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__request_method
msgid "Request Method"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__request_preview
msgid "Request Preview"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__request_time
msgid "Request Time"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__request_url
msgid "Request Url"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__response_body
msgid "Response Body"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__response_b64
msgid "Response Content"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__response_content_length
msgid "Response Content Length"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__response_content_type
msgid "Response Content Type"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__response_date
msgid "Response Date"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__response_headers
msgid "Response Headers"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__response_headers_preview
msgid "Response Headers Preview"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__response_preview
msgid "Response Preview"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__response_status_code
msgid "Response Status Code"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__response_time
msgid "Response Time"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__stack_trace
msgid "Stack Trace"
msgstr ""

#. module: api_log
#: model_terms:ir.ui.view,arch_db:api_log.api_log_view_search
msgid "Success"
msgstr ""

#. module: api_log
#: model:ir.model.fields,field_description:api_log.field_api_log__time
msgid "Time"
msgstr ""

#. module: api_log
#: model_terms:ir.ui.view,arch_db:api_log.api_log_view_search
msgid "Url"
msgstr ""
2 changes: 2 additions & 0 deletions api_log/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
from . import api_log_collection
from . import api_log
Loading
Loading