{"id":19791824,"url":"https://github.com/making/access-logger","last_synced_at":"2025-05-01T01:32:49.606Z","repository":{"id":136908348,"uuid":"588112688","full_name":"making/access-logger","owner":"making","description":"Access Logger as a HttpExchangeRepository implementation ","archived":false,"fork":false,"pushed_at":"2024-05-24T03:51:17.000Z","size":123,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"develop","last_synced_at":"2025-04-06T07:37:22.911Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/making.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-01-12T11:01:59.000Z","updated_at":"2024-12-11T16:22:31.000Z","dependencies_parsed_at":"2024-01-05T02:37:17.294Z","dependency_job_id":"3a5ae3d8-2613-4d47-8c04-896eccf8d372","html_url":"https://github.com/making/access-logger","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/making%2Faccess-logger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/making%2Faccess-logger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/making%2Faccess-logger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/making%2Faccess-logger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/making","download_url":"https://codeload.github.com/making/access-logger/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251808690,"owners_count":21647327,"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","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":[],"created_at":"2024-11-12T07:05:01.515Z","updated_at":"2025-05-01T01:32:49.328Z","avatar_url":"https://github.com/making.png","language":"Java","readme":"# access-logger\nAccess Logger as a HttpExchangeRepository implementation \n\n```xml\n\u003cdependency\u003e\n\t\u003cgroupId\u003eam.ik.access-logger\u003c/groupId\u003e\n\t\u003cartifactId\u003eaccess-logger\u003c/artifactId\u003e\n\t\u003cversion\u003e0.3.2\u003c/version\u003e\n\u003c/dependency\u003e\n\u003c!-- Spring Boot Actuator is also required --\u003e\n\u003cdependency\u003e\n\t\u003cgroupId\u003eorg.springframework.boot\u003c/groupId\u003e\n\t\u003cartifactId\u003espring-boot-starter-actuator\u003c/artifactId\u003e\n\u003c/dependency\u003e\n```\n\n\n## Example\n\n```java\nimport am.ik.accesslogger.AccessLogger;\nimport am.ik.accesslogger.AccessLoggerBuilder;\n\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\n\n@Configuration(proxyBeanMethods = false)\npublic class AppConfig {\n\n\t@Bean\n\tpublic AccessLogger accessLogger() {\n\t\treturn AccessLoggerBuilder.accessLogger().filter(httpExchange -\u003e {\n\t\t\tfinal String uri = httpExchange.getRequest().getUri().getPath();\n\t\t\treturn uri != null \u0026\u0026 !(uri.equals(\"/readyz\") || uri.equals(\"/livez\") || uri.startsWith(\"/actuator\"));\n\t\t}).build();\n\t}\n\n}\n```\n\n\u003e [!NOTE]\n\u003e `AccessLoggerBuilder` is available since 0.3.0 \n\n\nBy deafult, only `request_headers`, `response_headers` and `time_taken` are recorded.\nIn order to log all attributes, you also need to configure `management.httpexchanges.recording.include` as follows:\n\n```properties\nmanagement.httpexchanges.recording.include=request_headers,response_headers,remote_address,principal,time_taken\n```\n\n## How to customize\n\n```java\nAccessLogger accessLogger = AccessLoggerBuilder.accessLogger()\n\t// Change the log level\n\t.level(Level.INFO) // Default: INFO\n\t// Change the logger name\n\t.loggerName(\"accesslog\") // Default: accessLog\n\t// Enable structured logging via SLF4J key-value API\n\t.addKeyValues(true) // Default: false\n\t// Make log messages empty if structured logging is enabled\n\t.emptyLogMessage(true) // Default: false\n\t// Customize log message\n\t.logCustomizer((builder, exchange) -\u003e {})\n\t// Customize logging Event\n\t.loggingEventCustomizer((builder, exchange) -\u003e builder)\n\t// Filter the log message depending on the http request\n\t.filter(httpExchange -\u003e {\n\t\tfinal String uri = httpExchange.getRequest().getUri().getPath();\n\t\treturn uri != null \u0026\u0026 !(uri.equals(\"/readyz\") || uri.equals(\"/livez\") || uri.startsWith(\"/actuator\"));\n\t})\n\t.build();\n```","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaking%2Faccess-logger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaking%2Faccess-logger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaking%2Faccess-logger/lists"}