{"id":37425057,"url":"https://github.com/tomcat-slf4j-logback/tomcat-slf4j-logback","last_synced_at":"2026-01-16T06:12:20.933Z","repository":{"id":57719841,"uuid":"1044506","full_name":"tomcat-slf4j-logback/tomcat-slf4j-logback","owner":"tomcat-slf4j-logback","description":"Tomcat, SLF4J and Logback integration Releases","archived":false,"fork":false,"pushed_at":"2024-06-03T18:01:54.000Z","size":1845,"stargazers_count":176,"open_issues_count":2,"forks_count":52,"subscribers_count":19,"default_branch":"master","last_synced_at":"2025-08-02T08:27:39.377Z","etag":null,"topics":["logback","logback-access","logging","tomcat","tomcat-slf4j-logback"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"epl-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tomcat-slf4j-logback.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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,"zenodo":null}},"created_at":"2010-11-02T12:13:12.000Z","updated_at":"2025-02-24T13:55:42.000Z","dependencies_parsed_at":"2025-07-14T16:34:56.488Z","dependency_job_id":"20635342-6ec2-42a6-8ee9-9ef6c4a83775","html_url":"https://github.com/tomcat-slf4j-logback/tomcat-slf4j-logback","commit_stats":null,"previous_names":["grgrzybek/tomcat-slf4j-logback"],"tags_count":77,"template":false,"template_full_name":null,"purl":"pkg:github/tomcat-slf4j-logback/tomcat-slf4j-logback","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomcat-slf4j-logback%2Ftomcat-slf4j-logback","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomcat-slf4j-logback%2Ftomcat-slf4j-logback/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomcat-slf4j-logback%2Ftomcat-slf4j-logback/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomcat-slf4j-logback%2Ftomcat-slf4j-logback/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tomcat-slf4j-logback","download_url":"https://codeload.github.com/tomcat-slf4j-logback/tomcat-slf4j-logback/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomcat-slf4j-logback%2Ftomcat-slf4j-logback/sbom","scorecard":{"id":445428,"data":{"date":"2025-08-11","repo":{"name":"github.com/tomcat-slf4j-logback/tomcat-slf4j-logback","commit":"4c824fa5b97490698c589d3af376da8189b7b340"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.7,"checks":[{"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":"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":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"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":"Dangerous-Workflow","score":-1,"reason":"no workflows found","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":"Code-Review","score":0,"reason":"Found 0/13 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":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"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":"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":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Eclipse Public License 1.0: LICENSE: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 tomcat10 not signed: https://api.github.com/repos/tomcat-slf4j-logback/tomcat-slf4j-logback/releases/27744745","Warn: release artifact tomcat9 not signed: https://api.github.com/repos/tomcat-slf4j-logback/tomcat-slf4j-logback/releases/3476520","Warn: release artifact tomcat85 not signed: https://api.github.com/repos/tomcat-slf4j-logback/tomcat-slf4j-logback/releases/3476514","Warn: release artifact tomcat8 not signed: https://api.github.com/repos/tomcat-slf4j-logback/tomcat-slf4j-logback/releases/3474956","Warn: release artifact tomcat7 not signed: https://api.github.com/repos/tomcat-slf4j-logback/tomcat-slf4j-logback/releases/3474949","Warn: release artifact tomcat10 does not have provenance: https://api.github.com/repos/tomcat-slf4j-logback/tomcat-slf4j-logback/releases/27744745","Warn: release artifact tomcat9 does not have provenance: https://api.github.com/repos/tomcat-slf4j-logback/tomcat-slf4j-logback/releases/3476520","Warn: release artifact tomcat85 does not have provenance: https://api.github.com/repos/tomcat-slf4j-logback/tomcat-slf4j-logback/releases/3476514","Warn: release artifact tomcat8 does not have provenance: https://api.github.com/repos/tomcat-slf4j-logback/tomcat-slf4j-logback/releases/3474956","Warn: release artifact tomcat7 does not have provenance: https://api.github.com/repos/tomcat-slf4j-logback/tomcat-slf4j-logback/releases/3474949"],"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":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"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 18 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"}}]},"last_synced_at":"2025-08-19T06:37:13.260Z","repository_id":57719841,"created_at":"2025-08-19T06:37:13.260Z","updated_at":"2025-08-19T06:37:13.260Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28477633,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T03:13:13.607Z","status":"ssl_error","status_checked_at":"2026-01-16T03:11:47.863Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["logback","logback-access","logging","tomcat","tomcat-slf4j-logback"],"created_at":"2026-01-16T06:12:20.358Z","updated_at":"2026-01-16T06:12:20.923Z","avatar_url":"https://github.com/tomcat-slf4j-logback.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"﻿# Tomcat + SLF4J + Logback #\n\n[![Build Status](https://travis-ci.org/tomcat-slf4j-logback/tomcat-slf4j-logback.svg?branch=master)](https://travis-ci.org/tomcat-slf4j-logback/tomcat-slf4j-logback)\n[![Eclipse](https://img.shields.io/badge/license-Eclipse-blue.svg)](https://www.eclipse.org/legal/epl-v10.html)\n[![Project Stats](https://www.openhub.net/p/tomcat-slf4j-logback/widgets/project_thin_badge.gif)](https://www.openhub.net/p/tomcat-slf4j-logback)\n[![Github All Releases](https://img.shields.io/github/downloads/tomcat-slf4j-logback/tomcat-slf4j-logback/total.svg)]()\n\nTomcat SLF4J Logback is a drop in replacement to tomcat allowing full all internal logging to use our favorite slf4j/logback libraries.\n\n## MODULE PROJECTS ##\n\nThis was the releases repository for the Tomcat Slf4j Logback Project.  Please refer to [tomcat-slf4j-logback](https://github.com/tomcat-slf4j-logback) top level project for access to specific repos.  Use maven central for downloads.\n\n## LOGBACK NOTICE ##\n\nAs of logback 1.1.7, it is no longer necessary to include `${catalina.home}` in server.xml for logback-access.  We have also realligned our code to better match logback in all ways.\nThroughout this documentation you will read about the prior setup and the new setup.  Both should work without problems.\n\n## PRE-BUILD NOTICE ##\n\nDrop in support 'server.xml' is correct on latest release.  Issues existed in tomcat 8.5 and 9.0 with Jasper listener being present.  Remove that listener to use older builds.\n\n## END OF LIFE NOTICE ##\n\nTomcat 6 is now End of Life.  As such, we no longer support it via repo as we have released all we will for tomcat6.  Please use our downloads and/or checkout project before removal was performed at [f047273](https://github.com/tomcat-slf4j-logback/tomcat-slf4j-logback/commit/f0472736559b2b30038009e57593a7fe899929c9).\n\nTomcat 7 is now End of Life.  As such, we no longer support it via repo as we have released all we will for tomcat7.  Please use our downloads and/or clone project module for tomcat7 to [build](https://github.com/tomcat-slf4j-logback/tomcat7-slf4j-logback).\n\nTomcat 8 is now End of Life.  As such, we no longer support it via repo as we have released all we will for tomcat8.  Please use our downloads and/or checkout project before removal was performed at [bf0d9a2](https://github.com/tomcat-slf4j-logback/tomcat-slf4j-logback/commit/bf0d9a2b4af6502306ab0faa8eb7d0327a494f97).\n\nTomcat 8.5 is now End of Life.  As such, we no longer support it via repo as we have released all we will for tomcat85.  Please use our downloads and/or clone project module for tomcat85 to [build](https://github.com/tomcat-slf4j-logback/tomcat85-slf4j-logback).\n\n## Java Support ##\n\nJava 7 through 23 is supported.\n\n## RELEASES ##\n\nReleases are grouped by tomcat version.  Pick the version most appropriate to your use-case.  If you would like a pre-built version not listed please open an issue.  Both github releases and maven central are listed below.\n\n### NOTE: The github releases all say tomcat10 (latest) but resolve to version you want per label (left side) ###\n\n[![tomcat9](https://img.shields.io/github/v/tag/tomcat-slf4j-logback/tomcat-slf4j-logback?label=tomcat9)](https://github.com/tomcat-slf4j-logback/tomcat-slf4j-logback/releases/tag/tomcat9)\n[![Maven central](https://maven-badges.herokuapp.com/maven-central/com.github.tomcat-slf4j-logback/tomcat9-slf4j-logback/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.github.tomcat-slf4j-logback/tomcat9-slf4j-logback)\n\n[![tomcat10](https://img.shields.io/github/v/tag/tomcat-slf4j-logback/tomcat-slf4j-logback?label=tomcat10)](https://github.com/tomcat-slf4j-logback/tomcat-slf4j-logback/releases/tag/tomcat10)\n[![Maven central](https://maven-badges.herokuapp.com/maven-central/com.github.tomcat-slf4j-logback/tomcat10-slf4j-logback/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.github.tomcat-slf4j-logback/tomcat10-slf4j-logback)\n\n[![tomcat11](https://img.shields.io/github/v/tag/tomcat-slf4j-logback/tomcat-slf4j-logback?label=tomcat11)](https://github.com/tomcat-slf4j-logback/tomcat-slf4j-logback/releases/tag/tomcat11)\n[![Maven central](https://maven-badges.herokuapp.com/maven-central/com.github.tomcat-slf4j-logback/tomcat11-slf4j-logback/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.github.tomcat-slf4j-logback/tomcat11-slf4j-logback)\n\n\n** deprecated releases **\n\n[![tomcat6](https://img.shields.io/github/v/tag/tomcat-slf4j-logback/tomcat-slf4j-logback?label=tomcat6)](https://github.com/tomcat-slf4j-logback/tomcat-slf4j-logback/releases/tag/tomcat6)\n[![Maven central](https://maven-badges.herokuapp.com/maven-central/com.github.tomcat-slf4j-logback/tomcat6-slf4j-logback/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.github.tomcat-slf4j-logback/tomcat6-slf4j-logback)\n\n[![tomcat7](https://img.shields.io/github/v/tag/tomcat-slf4j-logback/tomcat-slf4j-logback?label=tomcat7)](https://github.com/tomcat-slf4j-logback/tomcat-slf4j-logback/releases/tag/tomcat7)\n[![Maven central](https://maven-badges.herokuapp.com/maven-central/com.github.tomcat-slf4j-logback/tomcat7-slf4j-logback/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.github.tomcat-slf4j-logback/tomcat7-slf4j-logback)\n\n[![tomcat8](https://img.shields.io/github/v/tag/tomcat-slf4j-logback/tomcat-slf4j-logback?label=tomcat8)](https://github.com/tomcat-slf4j-logback/tomcat-slf4j-logback/releases/tag/tomcat8)\n[![Maven central](https://maven-badges.herokuapp.com/maven-central/com.github.tomcat-slf4j-logback/tomcat8-slf4j-logback/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.github.tomcat-slf4j-logback/tomcat8-slf4j-logback)\n\n[![tomcat85](https://img.shields.io/github/v/tag/tomcat-slf4j-logback/tomcat-slf4j-logback?label=tomcat85)](https://github.com/tomcat-slf4j-logback/tomcat-slf4j-logback/releases/tag/tomcat85)\n[![Maven central](https://maven-badges.herokuapp.com/maven-central/com.github.tomcat-slf4j-logback/tomcat85-slf4j-logback/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.github.tomcat-slf4j-logback/tomcat85-slf4j-logback)\n\n## Quick Start ##\n\nIf you quickly want to configure Tomcat to use Slf4J and Logback, just download latest package available\nfrom github [releases](https://github.com/tomcat-slf4j-logback/tomcat-slf4j-logback/releases)\ninto $CATALINA_HOME.  Be advised doing so will replace server.xml with default version and logging valve!\n\nSome rather old versions are not predefined for direct exploding into $CATALINA_HOME.  If you would like that changed,\nplease raise an issue.\n\nThe following directions are for manual setup.\n\nAfter downloading copy as follows:\n\n* `bin/tomcat-juli.jar` to `$CATALINA_HOME/bin` (replacing existing `tomcat-juli.jar`)\n* `bin/setenv.sh` or `bin\\setenv.bat` to `$CATALINA_HOME/bin` (this script contains proper variable name\nand doesn't require any changes, unless you have your own version of `setenv.sh`/`setenv.bat` script)\n* `conf/logback.xml` to `$CATALINA_HOME/conf`\n* `conf/logback-access.xml` to `$CATALINA_HOME/conf` (older version was called `logback-access-localhost.xml`)\n* `conf/server.xml` to `$CATALINA_HOME/conf` (this file contains proper valve and doesn't require any\nchanges, unless you have your own version of `server.xml`)\n* `lib/logback-core-*.jar` to `$CATALINA_HOME/lib`\n* `lib/logback-access-*.jar` to `$CATALINA_HOME/lib`\n\nDelete `$CATALINA_HOME/conf/logging.properties`. This will turn off `java.util.logging` completely.\n\nIf you use your own `setenv.sh` in `$CATALINA_BASE/bin`, the default one `$CATALINA_HOME/bin/setenv.sh` will not be used,\nso you have to define `juli-logback.configurationFile` Java property in your local `setenv.sh` manually. \nYou can define it to use default configuration file like in `bin/setenv.sh` or to use any other located on your filesystem, \njust make sure that Tomcat process will have enough privileges to read it.\n\n`conf/logback.xml` tries to reflect original Tomcat logging configuration. Feel free to change it.\n\nWhen using your own preconfigured `server.xml`, the following will need applied.\n\nAdd (if using legacy `logback-access-localhost.xml`):\n\n    \u003cValve className=\"ch.qos.logback.access.tomcat.LogbackValve\" quiet=\"true\"\n       filename=\"${catalina.home}/conf/logback-access-localhost.xml\" /\u003e\n\n    note: if using logback 1.1.7+, the `${catalina.home}` can be removed\n\nAdd (if using logback defined naming `logback-access.xml` which allows it to auto discover)\n\n    \u003cValve className=\"ch.qos.logback.access.tomcat.LogbackValve\" quiet=\"true\" /\u003e\n\nto `$CATALINA_HOME/conf/server.xml`.\n\nRemove:\n\n    \u003cValve className=\"org.apache.catalina.valves.AccessLogValve\" directory=\"logs\"\n        prefix=\"localhost_access_log.\" suffix=\".txt\"\n        pattern=\"%h %l %u %t \u0026quot;%r\u0026quot; %s %b\" /\u003e\n\nfrom `$CATALINA_HOME/conf/server.xml`.\n\nFinal step: run `$CATALINA_HOME/bin/startup.sh` (or `startup.bat`). Voila!\n\n## Git Bash ##\n\nGit Bash in Windows now supports *nix based running.  This was accomplished by removing undocumented logback\nsetting `file:` from logback.configurationFile.\n\n## Maven Central Distribution ##\n\nMaven central distribution is available.  Zip binaries contain same as github releases.  Below are tomcat-juli jars.\n\nFor users to get release, use dependency as follows.\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.github.tomcat-slf4j-logback\u003c/groupId\u003e\n    \u003cartifactId\u003etomcat6-slf4j-logback\u003c/artifactId\u003e\n    \u003cversion\u003e${tomcat.version}\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.github.tomcat-slf4j-logback\u003c/groupId\u003e\n    \u003cartifactId\u003etomcat7-slf4j-logback\u003c/artifactId\u003e\n    \u003cversion\u003e${tomcat.version}\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.github.tomcat-slf4j-logback\u003c/groupId\u003e\n    \u003cartifactId\u003etomcat8-slf4j-logback\u003c/artifactId\u003e\n    \u003cversion\u003e${tomcat.version}\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.github.tomcat-slf4j-logback\u003c/groupId\u003e\n    \u003cartifactId\u003etomcat85-slf4j-logback\u003c/artifactId\u003e\n    \u003cversion\u003e${tomcat.version}\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.github.tomcat-slf4j-logback\u003c/groupId\u003e\n    \u003cartifactId\u003etomcat9-slf4j-logback\u003c/artifactId\u003e\n    \u003cversion\u003e${tomcat.version}\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.github.tomcat-slf4j-logback\u003c/groupId\u003e\n    \u003cartifactId\u003etomcat10-slf4j-logback\u003c/artifactId\u003e\n    \u003cversion\u003e${tomcat.version}\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.github.tomcat-slf4j-logback\u003c/groupId\u003e\n    \u003cartifactId\u003etomcat11-slf4j-logback\u003c/artifactId\u003e\n    \u003cversion\u003e${tomcat.version}\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\nThe tomcat-slfj4-logback binary must be renamed as tomcat-juli to use within a tomcat build.\n\n## Site Page ##\n\nSite page is located [here](https://tomcat-slf4j-logback.github.io/tomcat-slf4j-logback/)\n\n## Details ##\n\nThis project allows using SLF4J and Logback in Apache Tomcat absolutely without the need for commons-\nlogging, log4j, and java.util.logging.\n\nThis project's main and only goal is to allow the following:\n\n* redirect all `org.apache.commons.logging` (repackaged to `org.apache.juli.logging`) calls to `org.slf4j`\n  (repackaged to `org.apache.juli.logging.org.slf4j`) - i.e. handle internal tomcat logging with slf4j and\n  logback binding,\n* make still possible to use logback-access with `logback-access.xml` config - using standard functionality\n  of logback-access,\n* make possible to use independent configuration of slf4j+logback from all web applications which may carry\n  their own slf4j-api, logback-core, and logback-classic in their `WEB-INF/lib` directory.\n\nUsing only Mavens `pom.xml` file, proper source JARs are downloaded from maven repository and unpacked.\nThen all classes are refactored under `org.apache.juli.logging` package/subpackages and then compiled.\n\nTo allow web applications to use their own slf4j-api and logback-classic, classes used by Tomcat (particularly\njcl-over-slf4j) must go into different, non-standard packages. According to \n[Tomcat Documentation](https://tomcat.apache.org/tomcat-7.0-doc/class-loader-howto.html#Class_Loader_Definitions)\nweb application looks up classes in their `WEB-INF/classes` directory and `WEB-INF/lib/*.jar` files before looking\nthem in `$CATALINA_HOME/lib`, but **after** looking them in _system class loader_. So Tomcat needs only to\nhave `tomcat-juli` replaced with versions of `jcl-over-slf4j`, `slf4j-api`, `logback-core`, and `logback-classic`\nrefactored into different packages.\n\nFinally, in order to keep the classpath clean, I've chosen the method of selecting Logback's configuration file\nusing `juli-logback.configurationFile` system property. It is renamed in source files during _refactoring_\nphase. Leaving standard `logback.configurationFile` property would cause selecting this file in all web\napplications despite of having dedicated, classpath-based `logback.xml` configuration files.\n\nThere are four JARs involved in the process transformed into `org.apache.juli.logging` exactly the same way\nas commons-logging is transformed in Tomcat's build process. It is eventually compiled into `tomcat-juli.jar`\n - `tomcat-juli` is mandatory, because it is directly referenced during Tomcat's startup process while\n   constructing _system class loader_. This JAR is transformed and placed in\n   `$CATALINA_HOME/bin/tomcat-juli.jar` file.:\n\n* `jcl-over-slf4j` - commons logging over SLF4J JAR.\n* `slf4j-api` - main SLF4J JAR.\n* `logback-core` - core Logback JAR.\n* `logback-classic` - actual SLF4J binding JAR.\n\nPrior builds of this project contained 4 separate jars where tomcat-juli noted these in the manifest in\norder to avoid further touching of tomcat configuration files for security purposes.  Current build \nresults in a single tomcat-juli file and thus no longer requires this.\n\n## Installation ##\n\nLaunching the build requires Maven install - everything will be downloaded upon build.  See individual repos for building modules.\n\nType:\n\n    mvn clean install\n\nTomcat versions for 9, 10, and 11 will build from their respective modules.  Tomcat 6, 7, 8, and 8.5 are no longer provided on repo.\n\nAnd move tomcat-juli JAR for your tomcat version from `target` directory to `$CATALINA_HOME/bin` directory.\n\nMore detailed instruction:\n\n1. edit file `pom.xml` to update tomcat/slf4j/logback dependencies\n2. run `mvn clean install` to build jar, javadoc, and source\n3. run `mvn site` to generate site page\n4. move `tomcat-juli.jar` from `target` directory to `$CATALINA_HOME/bin`.\n\nAfter changing versions (e.g. for Tomcat), run `mvn clean install`.\n\nRunning Tomcat now will use default (very verbose) configuration of Logback. To change Logback's\nconfiguration, run Tomcat with the following system variable (using your favorite method of setting such\nvariables - in `catalina.sh`, `setenv.sh` or other):\n\n    -Djuli-logback.configurationFile=file:\u003clogback.xml location\u003e\n\nAlternative to allow git bash, remove the `file:` marker.  This works on newer tomcat versions but has not been\ntested on older copies.  It works using the bat or sh in this mode.\n\n    -Djuli-logback.configurationFile=\u003clogback.xml location\u003e\n\n## Configuration ##\n\nNow you can configure whatever logging technology you want for your web applications. I recommend SLF4J\nand Logback because from now on, it will not collide with Tomcat's logging configuration.\n\nWhile configuring Tomcat's logging, keep in mind that you have to use renamed packages in `logback.xml`\nconfig file, e.g.:\n\n    \u003cconfiguration\u003e\n        \u003cappender name=\"CONSOLE\" class=\"org.apache.juli.logging.ch.qos.logback.core.ConsoleAppender\"\u003e\n            \u003cencoder\u003e\n                \u003cpattern\u003e%d{HH:mm:ss.SSS} %-5level {%thread} [%logger{20}] : %msg%n\u003c/pattern\u003e\n            \u003c/encoder\u003e\n        \u003c/appender\u003e\n        \u003clogger name=\"org.apache.catalina.core.ContainerBase.[Catalina].[localhost]\" level=\"INFO\"\n                additivity=\"false\"\u003e\n            \u003cappender-ref ref=\"FILE-LOCALHOST\" /\u003e\n        \u003c/logger\u003e\n        \u003croot level=\"INFO\"\u003e\n            \u003cappender-ref ref=\"CONSOLE\" /\u003e\n        \u003c/root\u003e\n    \u003c/configuration\u003e\n\nConfiguration of logback-access doesn't require renamed packages, as the required JARs are loaded from\n_common class loader_.\n\nSample `logback.xml` reflecting the configuration from standard `$CATALINA_HOME/conf/logging.properties`\ncan be found in conf/logback.xml from github [releases] (https://github.com/tomcat-slf4j-logback/tomcat-slf4j-logback/releases).\n\n\n## Tomcat Customization ##\n\n#### Tomcat 6.0.x 7.0.x 8.0.x 8.5.x 9.0.x 10.0.x ####\n\nAfter unpacking `apache-tomcat-6.0.x.zip`, `apache-tomcat-7.0.x.zip`, `apache-tomcat-8.0.x.zip`, `apache-tomcat-8.5.x.zip`\n`apache-tomcat-9.0.x.zip`, or 'apache-tomcat-10.0.x.zip' one can run Tomcat by executing `$CATALINA_HOME/bin/startup.sh`. This will cause running\nTomcat with standard java.util.logging enabled. The standard commandline is:\n\n    \"java\" \\\n        -Djava.util.logging.config.file=\"$CATALINA_HOME/conf/logging.properties\"\n        -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager\n        -Djava.endorsed.dirs=\"$CATALINA_HOME/endorsed\"\n        -classpath \"$CATALINA_HOME\\bin\\bootstrap.jar\"\n        -Dcatalina.base=\"$CATALINA_HOME\"\n        -Dcatalina.home=\"$CATALINA_HOME\"\n        -Djava.io.tmpdir=\"$CATALINA_HOME\"\n        org.apache.catalina.startup.Bootstrap start\n\nDeleting `$CATALINA_HOME/conf/logging.properties` will replace `-Djava.util.logging.config.file` with\n`-Dnop`.\n\nFinally we must configure our tomcat-slf4j-logback integration:\n\n* place our tomcat-juli JAR in `$CATALINA_HOME/bin`\n* add `-Djuli-logback.configurationFile=\u003clogback.xml location\u003e` to `$JAVA_OPTS` in `setenv.sh`\n* if the above add does not work, add `file:` before `\u003clogback.xml location\u003e`\n\nNow Tomcat's internal logging goes through `org.apache.juli.logging.org.slf4j` and \n`org.apache.juli.logging.ch.qos.logback` to appenders configured in `$CATALINA_HOME/conf/logback.xml` (or\nwhatever file you set `juli-logback.configurationFile` variable to).\n\nThe final step is to configure `logback-access`. Now we don't have to deal with package manipulation. Just add:\n\nAdd (if using legacy `logback-access-localhost.xml`):\n\n    \u003cValve className=\"ch.qos.logback.access.tomcat.LogbackValve\" quiet=\"true\"\n        filename=\"${catalina.home}/conf/logback-access-localhost.xml\" /\u003e\n\n    note: if using logback 1.1.7+, the `${catalina.home}` can be removed\n\nAdd (if using logback defined naming `logback-access.xml` which allows it to auto discover)\n\n    \u003cValve className=\"ch.qos.logback.access.tomcat.LogbackValve\" quiet=\"true\" /\u003e\n\nto `$CATALINA_HOME/conf/server.xml`, place properly configured `logback-access-localhost.xml` on\n`$CATALINA_HOME/conf` and place `logback-core` and `logback-access` JARs into `$CATALINA_HOME/lib`. This\nwon't cause problems with individual WARs' slf4j+logback configuration, because `logback.xml` is read by\n`logback-classic` which is recommended to reside in `WEB-INF/lib`. The only additional benefit is that WARs\nwill see `logback-core` through _common class loader_.\n\n## Using Tomcat in Eclipse ##\n\n1. Go to Window › Preferences › Server › Runtime Environments and add your server runtime as always\n1. Go to Servers view and add server instance as always\n1. Open server definition (RMB, Open or `F3`) and click \u003cu\u003eopen launch configuration\u003c/u\u003e\n1. On _Arguments_ tab in _VM arguments_ add\n    `-Djuli-logback.configurationFile=\"\u003cabsolute tomcat home path\u003e/conf/logback.xml\"`\n\nThat's all. While creating server runtime instance, eclipse generates VM arguments using absolute paths (no\nvariables), so just copy the Tomcat home path and add `-Djuli-logback.configurationFile` argument.\n\nRemember - Tomcat installation must be configured according to **Quick Start**.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftomcat-slf4j-logback%2Ftomcat-slf4j-logback","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftomcat-slf4j-logback%2Ftomcat-slf4j-logback","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftomcat-slf4j-logback%2Ftomcat-slf4j-logback/lists"}