{"id":"0f19d6af-2903-4ecd-93d2-ad6951e919ea","shortId":"uK7NNJ","kind":"skill","title":"180 Java Observability Logging","tagline":"Cursor Rules Java skill by Jabrena","description":"# Java Logging Best Practices\n\nImplement effective Java logging following standardized frameworks, meaningful log levels, core practices (parameterized logging, exception handling, no sensitive data), flexible configuration, security-conscious logging, monitoring and alerting, and comprehensive logging validation through testing.\n\n**What is covered in this Skill?**\n\n- Standardized framework selection: SLF4J facade with Logback or Log4j2\n- Meaningful and consistent log levels: ERROR, WARN, INFO, DEBUG, TRACE\n- Core practices: parameterized logging, proper exception handling, avoiding sensitive data\n- Configuration: environment-specific (logback.xml, log4j2.xml), output formats, log rotation\n- Security: mask sensitive data, control log access, secure transmission, GDPR/HIPAA compliance\n- Log monitoring and alerting: centralized aggregation (ELK, Splunk, Loki), automated alerts\n- Logging validation through testing: assert log messages, verify formats, test levels, measure performance impact\n\n**Scope:** The reference is organized by examples (good/bad code patterns) for each core area. Apply recommendations based on applicable examples.\n\n## Constraints\n\nBefore applying any logging recommendations, ensure the project compiles. Compilation failure is a blocking condition. After applying improvements, run full verification.\n\n- **MANDATORY**: Run `./mvnw compile` or `mvn compile` before applying any change\n- **SAFETY**: If compilation fails, stop immediately — do not proceed until resolved\n- **VERIFY**: Run `./mvnw clean verify` or `mvn clean verify` after applying improvements\n- **BEFORE APPLYING**: Read the reference for detailed good/bad examples, constraints, and safeguards for each logging pattern\n\n## When to use this skill\n\n- Improve logging\n- Apply logging\n- Refactor logging\n- Add logging support\n\n## Workflow\n\n1. **Compile project before logging changes**\n\nRun `./mvnw compile` or `mvn compile` and stop immediately if compilation fails.\n\n2. **Read logging reference and assess current observability**\n\nRead `references/180-java-observability-logging.md` and evaluate framework usage, log levels, sensitive-data handling, and config gaps.\n\n3. **Apply logging and observability improvements**\n\nImplement selected framework/configuration/practice changes, including secure logging and monitoring integration where applicable.\n\n4. **Verify with full build**\n\nRun `./mvnw clean verify` or `mvn clean verify` after applying improvements.\n\n## Reference\n\nFor detailed guidance, examples, and constraints, see [references/180-java-observability-logging.md](references/180-java-observability-logging.md).","tags":["180","java","observability","logging","cursor","rules","jabrena"],"capabilities":["skill","source-jabrena","category-cursor-rules-java"],"categories":["cursor-rules-java"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/jabrena/cursor-rules-java/180-java-observability-logging","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"install_from":"skills.sh"}},"qualityScore":"0.300","qualityRationale":"deterministic score 0.30 from registry signals: · indexed on skills.sh · published under jabrena/cursor-rules-java","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill:v1","enrichmentVersion":1,"enrichedAt":"2026-05-07T22:43:03.565Z","embedding":null,"createdAt":"2026-04-18T22:02:10.299Z","updatedAt":"2026-05-07T22:43:03.565Z","lastSeenAt":"2026-05-07T22:43:03.565Z","tsv":"'/mvnw':174,196,244,302 '1':237 '180':1 '2':255 '3':278 '4':296 'access':100 'add':233 'aggreg':110 'alert':42,108,115 'appli':144,152,167,180,204,207,229,279,310 'applic':148,295 'area':143 'assert':120 'assess':260 'autom':114 'avoid':81 'base':146 'best':13 'block':164 'build':300 'category-cursor-rules-java' 'central':109 'chang':182,242,287 'clean':197,201,303,307 'code':138 'compil':159,160,175,178,185,238,245,248,253 'complianc':104 'comprehens':44 'condit':165 'config':276 'configur':35,84 'conscious':38 'consist':66 'constraint':150,215,318 'control':98 'core':25,74,142 'cover':51 'current':261 'cursor':5 'data':33,83,97,273 'debug':72 'detail':212,314 'effect':16 'elk':111 'ensur':156 'environ':86 'environment-specif':85 'error':69 'evalu':266 'exampl':136,149,214,316 'except':29,79 'facad':59 'fail':186,254 'failur':161 'flexibl':34 'follow':19 'format':91,124 'framework':21,56,267 'framework/configuration/practice':286 'full':170,299 'gap':277 'gdpr/hipaa':103 'good/bad':137,213 'guidanc':315 'handl':30,80,274 'immedi':188,251 'impact':129 'implement':15,284 'improv':168,205,227,283,311 'includ':288 'info':71 'integr':293 'jabrena':10 'java':2,7,11,17 'level':24,68,126,270 'log':4,12,18,23,28,39,45,67,77,92,99,105,116,121,154,220,228,230,232,234,241,257,269,280,290 'log4j2':63 'log4j2.xml':89 'logback':61 'logback.xml':88 'loki':113 'mandatori':172 'mask':95 'meaning':22,64 'measur':127 'messag':122 'monitor':40,106,292 'mvn':177,200,247,306 'observ':3,262,282 'organ':134 'output':90 'parameter':27,76 'pattern':139,221 'perform':128 'practic':14,26,75 'proceed':191 'project':158,239 'proper':78 'read':208,256,263 'recommend':145,155 'refactor':231 'refer':132,210,258,312 'references/180-java-observability-logging.md':264,320,321 'resolv':193 'rotat':93 'rule':6 'run':169,173,195,243,301 'safeguard':217 'safeti':183 'scope':130 'secur':37,94,101,289 'security-consci':36 'see':319 'select':57,285 'sensit':32,82,96,272 'sensitive-data':271 'skill':8,54,226 'slf4j':58 'source-jabrena' 'specif':87 'splunk':112 'standard':20,55 'stop':187,250 'support':235 'test':48,119,125 'trace':73 'transmiss':102 'usag':268 'use':224 'valid':46,117 'verif':171 'verifi':123,194,198,202,297,304,308 'warn':70 'workflow':236","prices":[{"id":"4bea04e0-04ba-466a-a40e-88ace03f7d15","listingId":"0f19d6af-2903-4ecd-93d2-ad6951e919ea","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"jabrena","category":"cursor-rules-java","install_from":"skills.sh"},"createdAt":"2026-04-18T22:02:10.299Z"}],"sources":[{"listingId":"0f19d6af-2903-4ecd-93d2-ad6951e919ea","source":"github","sourceId":"jabrena/cursor-rules-java/180-java-observability-logging","sourceUrl":"https://github.com/jabrena/cursor-rules-java/tree/main/skills/180-java-observability-logging","isPrimary":false,"firstSeenAt":"2026-04-18T22:02:10.299Z","lastSeenAt":"2026-05-07T06:54:32.438Z"},{"listingId":"0f19d6af-2903-4ecd-93d2-ad6951e919ea","source":"skills_sh","sourceId":"jabrena/cursor-rules-java/180-java-observability-logging","sourceUrl":"https://skills.sh/jabrena/cursor-rules-java/180-java-observability-logging","isPrimary":true,"firstSeenAt":"2026-05-07T20:44:53.871Z","lastSeenAt":"2026-05-07T22:43:03.565Z"}],"details":{"listingId":"0f19d6af-2903-4ecd-93d2-ad6951e919ea","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"jabrena","slug":"180-java-observability-logging","source":"skills_sh","category":"cursor-rules-java","skills_sh_url":"https://skills.sh/jabrena/cursor-rules-java/180-java-observability-logging"},"updatedAt":"2026-05-07T22:43:03.565Z"}}