{"id":18272716,"url":"https://github.com/maximevw/autolog","last_synced_at":"2026-03-02T12:47:02.194Z","repository":{"id":44852905,"uuid":"231100093","full_name":"maximevw/autolog","owner":"maximevw","description":"Automatic logging for Java applications","archived":false,"fork":false,"pushed_at":"2022-12-10T06:08:24.000Z","size":298,"stargazers_count":4,"open_issues_count":5,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-09-04T05:08:17.045Z","etag":null,"topics":["aop","aspectj","automation","log","logging","spring","spring-aop"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/maximevw.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-12-31T14:12:03.000Z","updated_at":"2023-03-21T12:24:09.000Z","dependencies_parsed_at":"2023-01-26T03:45:57.875Z","dependency_job_id":null,"html_url":"https://github.com/maximevw/autolog","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/maximevw/autolog","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maximevw%2Fautolog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maximevw%2Fautolog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maximevw%2Fautolog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maximevw%2Fautolog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maximevw","download_url":"https://codeload.github.com/maximevw/autolog/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maximevw%2Fautolog/sbom","scorecard":{"id":629336,"data":{"date":"2025-08-11","repo":{"name":"github.com/maximevw/autolog","commit":"f1c0bbda7c25758002c952a621f9f35bf84a00c6"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.5,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/28 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/ci-workflow.yml:1","Warn: no topLevel permission defined: .github/workflows/release-workflow.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci-workflow.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/maximevw/autolog/ci-workflow.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci-workflow.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/maximevw/autolog/ci-workflow.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release-workflow.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/maximevw/autolog/release-workflow.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release-workflow.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/maximevw/autolog/release-workflow.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release-workflow.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/maximevw/autolog/release-workflow.yml/master?enable=pin","Info:   0 out of   4 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v1.2.0 not signed: https://api.github.com/repos/maximevw/autolog/releases/33012098","Warn: release artifact v1.1.0 not signed: https://api.github.com/repos/maximevw/autolog/releases/26309268","Warn: release artifact v1.0.0 not signed: https://api.github.com/repos/maximevw/autolog/releases/22629735","Warn: release artifact v1.2.0 does not have provenance: https://api.github.com/repos/maximevw/autolog/releases/33012098","Warn: release artifact v1.1.0 does not have provenance: https://api.github.com/repos/maximevw/autolog/releases/26309268","Warn: release artifact v1.0.0 does not have provenance: https://api.github.com/repos/maximevw/autolog/releases/22629735"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 3 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"55 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-h46c-h94j-95f3","Warn: Project is vulnerable to: GHSA-wf8f-6423-gfxg","Warn: Project is vulnerable to: GHSA-3x8x-79m2-3w2w","Warn: Project is vulnerable to: GHSA-57j2-w4cx-62h2","Warn: Project is vulnerable to: GHSA-jjjh-jjxp-wpff","Warn: Project is vulnerable to: GHSA-rgv9-q543-rqg4","Warn: Project is vulnerable to: GHSA-3f7h-mf4q-vrm4","Warn: Project is vulnerable to: GHSA-6phf-73q6-gh87","Warn: Project is vulnerable to: GHSA-wxr5-93ph-8wr9","Warn: Project is vulnerable to: GHSA-6hgm-866r-3cjv","Warn: Project is vulnerable to: GHSA-fjq5-5j5f-mvxh","Warn: Project is vulnerable to: GHSA-j288-q9x7-2f5v","Warn: Project is vulnerable to: GHSA-6pcc-3rfx-4gpm","Warn: Project is vulnerable to: GHSA-hwj3-m3p6-hj38","Warn: Project is vulnerable to: GHSA-7rjr-3q55-vv33","Warn: Project is vulnerable to: GHSA-8489-44mv-ggj8","Warn: Project is vulnerable to: GHSA-jfh8-c2jp-5v3q","Warn: Project is vulnerable to: GHSA-p6xc-xr62-6r2g","Warn: Project is vulnerable to: GHSA-5ggr-mpgw-3mgx","Warn: Project is vulnerable to: GHSA-7jw3-5q4w-89qg","Warn: Project is vulnerable to: GHSA-9848-v244-962p","Warn: Project is vulnerable to: GHSA-cvvx-r33m-v7pq","Warn: Project is vulnerable to: GHSA-59j4-wjwp-mw9m","Warn: Project is vulnerable to: GHSA-fh63-4r66-jc7v","Warn: Project is vulnerable to: GHSA-36p3-wjmg-h94x","Warn: Project is vulnerable to: GHSA-hh26-6xwr-ggv7","Warn: Project is vulnerable to: GHSA-6gf2-pvqw-37ph","Warn: Project is vulnerable to: GHSA-rfmp-97jj-h8m6","Warn: Project is vulnerable to: GHSA-2rmj-mq67-h97g","Warn: Project is vulnerable to: GHSA-2wrp-6fg6-hmc5","Warn: Project is vulnerable to: GHSA-4gc7-5j7h-4qph","Warn: Project is vulnerable to: GHSA-4wrc-f8pq-fpqp","Warn: Project is vulnerable to: GHSA-ccgv-vj62-xf9h","Warn: Project is vulnerable to: GHSA-gfwj-fwqj-fp3v","Warn: Project is vulnerable to: GHSA-hgjh-9rj2-g67j","Warn: Project is vulnerable to: GHSA-668q-qrv7-99fm","Warn: Project is vulnerable to: GHSA-6v67-2wr5-gvf4","Warn: Project is vulnerable to: GHSA-pr98-23f8-jwxv","Warn: Project is vulnerable to: GHSA-vmq6-5m68-f53m","Warn: Project is vulnerable to: GHSA-599f-7c49-w659","Warn: Project is vulnerable to: GHSA-rc42-6c7j-7h5r","Warn: Project is vulnerable to: GHSA-xf96-w227-r7c4","Warn: Project is vulnerable to: GHSA-4wp7-92pw-q264","Warn: Project is vulnerable to: GHSA-g5mm-vmx4-3rg7","Warn: Project is vulnerable to: GHSA-558x-2xjg-6232","Warn: Project is vulnerable to: GHSA-564r-hj7v-mcr5","Warn: Project is vulnerable to: GHSA-9cmq-m9j5-mvww","Warn: Project is vulnerable to: GHSA-wxqc-pxw9-g2p8","Warn: Project is vulnerable to: GHSA-3mc7-4q67-w48m","Warn: Project is vulnerable to: GHSA-98wm-3w3q-mw94","Warn: Project is vulnerable to: GHSA-9w3m-gqgf-c4p9","Warn: Project is vulnerable to: GHSA-c4r9-r8fh-9vj2","Warn: Project is vulnerable to: GHSA-hhhw-99gj-p3c3","Warn: Project is vulnerable to: GHSA-mjmj-j48q-9wg2","Warn: Project is vulnerable to: GHSA-w37g-rhq8-7m4j"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-21T07:23:59.054Z","repository_id":44852905,"created_at":"2025-08-21T07:23:59.054Z","updated_at":"2025-08-21T07:23:59.054Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279066013,"owners_count":26096209,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-15T02:00:07.814Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aop","aspectj","automation","log","logging","spring","spring-aop"],"created_at":"2024-11-05T12:03:27.483Z","updated_at":"2025-10-15T09:18:33.996Z","avatar_url":"https://github.com/maximevw.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Autolog\n[![Apache 2.0 License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](https://www.apache.org/licenses/LICENSE-2.0.txt)\n[![Maven Central](https://img.shields.io/maven-central/v/com.github.maximevw/autolog)](https://search.maven.org/search?q=g:com.github.maximevw%20AND%20autolog)\n![GitHub Workflow Status](https://img.shields.io/github/workflow/status/maximevw/autolog/Autolog%20CI%20Workflow)\n![Code Coverage](autolog-coverage-reporting/resources/jacoco.svg)\n[![Javadoc](https://javadoc.io/badge2/com.github.maximevw/autolog-core/javadoc.svg)](https://javadoc.io/doc/com.github.maximevw/autolog-core)\n\nA library providing capabilities for automatic logging in Java applications.\n\n## Modules\n### autolog-core\nThis is the core module of the library: it provides the core logging features independently of the implementation chosen\nfor automation.\n\n### autolog-aspectj\nThis module provides aspects for logging automation based on AspectJ weaving and using annotations defined in\n`autolog-core` module.\n\n### autolog-spring\nThis module is the implementation of the logging automation based on Spring AOP and using annotations defined in\n`autolog-core` module. It acts as a Spring Boot starter by providing auto-configuration class for Autolog.\n\n### autolog-coverage-reporting\nThis module is only used to generate a code coverage report for the entire project.\n\n## Getting started\n### Prerequisites\n\nUsing Autolog requires **JDK 11 or greater**.\n\n### Installing\n\nThe latest release of Autolog is available on Maven Central. You can install Autolog in your application using one of\nthe following Maven dependencies:\n* In a Spring application:\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.github.maximevw\u003c/groupId\u003e\n    \u003cartifactId\u003eautolog-spring\u003c/artifactId\u003e\n    \u003cversion\u003e1.2.0\u003c/version\u003e\n\u003c/dependency\u003e\n```\n* In an application using AspectJ weaving for logging automation by AOP:\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.github.maximevw\u003c/groupId\u003e\n    \u003cartifactId\u003eautolog-aspectj\u003c/artifactId\u003e\n    \u003cversion\u003e1.2.0\u003c/version\u003e\n\u003c/dependency\u003e\n```\n* In a classic Java application, you can use logging methods provided by Autolog without automation by AOP (not\nrecommended):\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.github.maximevw\u003c/groupId\u003e\n    \u003cartifactId\u003eautolog-core\u003c/artifactId\u003e\n    \u003cversion\u003e1.2.0\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n## Usage\n### Autolog annotations\n\nBasically, Autolog provides two types of annotations used to automatically generates log thanks to [AOP](https://en.wikipedia.org/wiki/Aspect-oriented_programming)\n(using [Spring AOP](https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#aop) implementation\nin the module `autolog-spring` or [AspectJ](https://www.eclipse.org/aspectj/) weaving in the module `autolog-aspectj`):\n\n* **`@AutoLogMethodInOut`**, **`@AutoLogMethodInput`** and **`@AutoLogMethodOutput`**: it helps to log, respectively,\nthe input and output data of methods, the input data only and the output data only. It can also be used to automatically\nlog exceptions.\n* **`@AutoLogPerformance`**: it helps to monitor and log the performance (execution time, failures, ...) of invoked\nmethods during the execution of an application. Please note that the usage of this annotation may impact the performance\nof your application. If you need high performance during the execution of your code, don't use it (especially in\nproduction).\n\nThese annotations can be located on classes or methods (or both, in this case the configuration of the annotations at\nmethod level gets the priority). For further information about the configuration of each annotation, please consult the\nJavadoc.\n\n* **`@Mask`**: only located on method arguments, it allows masking (totally or partially) the values of arguments logged\nthanks to the annotation `@AutoLogMethodInOut` or `@AutoLogMethodInput`.\n\n### Loggers management\n\nEach time Autolog will log something, it will use the loggers configured in a **`LoggerManager`** instance (which is a\nSpring-managed bean in Spring applications). The `LoggerManager` maintains a list of all the loggers to use, so Autolog\nis able to log the information at different places simultaneously. The real loggers instances managed by `LoggerManager`\nare wrapped in singleton adapters implementing `LoggerInterface`. By default, Autolog provides the following adapters:\n* `JavaLoggerAdapter`: wraps an instance of the classic `java.util.logging.Logger`\n* `Log4j2Adapter`: wraps an instance of `org.apache.logging.log4j.Logger`\n* `Slf4jAdapter`: wraps an instance of `org.slf4j.Logger`\n* `LogbackWithLogstashAdapter`: wraps an instance of `org.slf4j.Logger` which should use Logback implementation with\nLogstash encoder\n* `SystemOutAdapter`: wraps the standard output (`System.out` and `System.err`)\n* `XSlf4jAdapter`: wraps an instance of `org.slf4j.ext.XLogger`\n* _(Experimental)_ `JdbcAdapter`: persists log events into a database using JDBC.\n\nIn Spring Boot applications, the `LoggerManager` can be configured in the application properties (by setting the list\nof `LoggerInterface` implementations to register in the property `autolog.loggers`) thanks to the auto-configuration\nclass `AutologAutoConfiguration`.\n\n### Usage with AspectJ weaving\n\nIn order to use AspectJ weaving for logging automation by AOP, in addition to the dependency to `autolog-aspectj`,\nensure to have `org.aspectj:aspectjrt` in your classpath and to compile your application using AspectJ weaving,\nincluding the dependency to `autolog-aspectj` in the weaved dependencies.\n\nAt the starting of your application, insert the following code to instantiate the `LoggerManager` required by Autolog\nfor logging automation:\n```java\npublic class HelloApplication {\n    public static void main(final String[] args) {\n        // Instantiate Autolog.\n        final LoggerManager loggerManager = new LoggerManager();\n        // Register any loggers you want to use. See LoggerManager documentation for further details.\n        // loggerManager.register(...);\n        AspectJLoggerManager.getInstance().init(loggerManager);\n\n        // Put the code of your application here...\n    }\n}\n```\n\nNow, you can use Autolog annotations into your application.\n\n### Basic example with a Spring application\n\nAssuming your application is a REST API developed with Spring Web framework using an implementation of Slf4j for\nlogging.\n\nHere is the main class of your application:\n```java\n@SpringBootApplication\n@EnableAspectJAutoProxy\n@EnableAutoConfiguration\npublic class HelloApplication {\n    public static void main(String[] args) {\n        SpringApplication.run(HelloApplication.class, args);\n    }\n}\n```\n\nThe configuration file of your Spring application contains the following property:\n```properties\nautolog.loggers=Slf4jAdapter\n```\n\nHere is your web controller using Autolog annotations with default configuration:\n```java\n@RestController\n@AutoLogMethodInOut\n@AutoLogPerformance\npublic class HelloWebController {\n    @Autowired\n    private HelloService helloService;\n\n    @GetMapping(\"/hello\")\n    public String sayHello(@RequestParam final String name) {\n        return helloService.sayHello(name);\n    }\n}\n```\n\nHere is the service, called by the web controller, using Autolog annotations with default configuration:\n```java\n@Service\n@AutoLogMethodInOut\n@AutoLogPerformance\npublic class HelloService {\n    public String sayHello(final String name) {\n        return \"Hello \" + name + \"!\";\n    }\n}\n```\n\nWhen the API endpoint `GET /hello?name=John` is called, Autolog produces the following logs:\n```\nINFO  Entering HelloWebController.sayHello(name=John)\nINFO  Entering HelloService.sayHello(name=John)\nINFO  Exiting HelloService.sayHello() returning Hello John!\nDEBUG Method HelloService.sayHello executed in 6 ms (started: 2019-12-30 14:30:25.602, ended: 2019-12-30 14:30:25.608).\nINFO  Exiting HelloWebController.sayHello() returning Hello John!\nDEBUG Method [GET] /hello executed in 10 ms (started: 2019-12-30 14:30:25.600, ended: 2019-12-30 14:30:25.610).\nDEBUG Performance summary report for /hello:\nDEBUG \u003e /hello executed in 10 ms\nDEBUG |_ \u003e HelloService.sayHello executed in 6 ms\n```\n\nMore examples are available in this [GitHub repository](https://github.com/maximevw/autolog-examples).\n\n## Contributing\n\nIf you want to contribute to Autolog project, please read the content of CONTRIBUTING file.\n\n## Versioning\n\nAutolog uses [Semantic Versioning](https://semver.org/spec/v2.0.0.html).\n\n## License\n\nAutolog is distributed under [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt).\n\n## Next features\n\nFind below a non-exhaustive (and not sorted by priority) list of features we've planned to develop:\n* **`@AutoLog` annotation and logging profiles**\n\n  A new annotation `@AutoLog` grouping the behaviour of both annotations `@AutoLogMethodInOut` and `@AutoLogPerformance`\n  and using a configuration file (`classpath:autolog.yaml` by default) to define the parameters used to generate logs.\n  For example: using\n  ```java\n  @AutoLog(profile = \"customProfile\")\n  public void exampleMethod() {\n  }\n  ```\n  instead of\n  ```java\n  @AutoLogMethodInOut(/*custom parameters...*/)\n  @AutoLogPerformance(/*custom parameters...*/)\n  public void exampleMethod() {\n  }\n  ```\n\n  In Spring Boot auto-configuration, the profiles could be directly defined in the application property\n  `autolog.profiles`.\n\n* **Additional logger**\n\n  Provide new implementation `KafkaAdapter` of `LoggerInterface` to directly publish the generated logs in Kafka topics.\n\n* **Log HTTP requests and responses**\n\n  Automate the logging of HTTP requests and responses for applications providing a REST API (using JAX-RS or Spring\n  Web Framework) by using servlet filters.\n\n* **Loggers configuration by profile**\n\n  Register different loggers in the different defined logging profiles. For example: a custom profile uses\n  `SystemOutAdapter` and another one `Slf4jAdapter`.\n\n  In a given profile, the used loggers could also be different: for example the performance information logging uses\n  `SystemOutAdapter` and the logging of input/output data uses `Log4j2Adapter`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaximevw%2Fautolog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaximevw%2Fautolog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaximevw%2Fautolog/lists"}