{"id":23463726,"url":"https://github.com/ptv-logistics/log4jala","last_synced_at":"2025-04-14T08:14:29.808Z","repository":{"id":57722204,"uuid":"91617171","full_name":"ptv-logistics/Log4jALA","owner":"ptv-logistics","description":"Log4j appender for Azure Log Analytics","archived":false,"fork":false,"pushed_at":"2017-06-06T15:26:13.000Z","size":82,"stargazers_count":5,"open_issues_count":1,"forks_count":2,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-03-27T21:51:59.038Z","etag":null,"topics":["azure","azure-log-analytics","java","log-analysis","log4j"],"latest_commit_sha":null,"homepage":"https://ptv-logistics.github.io/Log4jALA/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ptv-logistics.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}},"created_at":"2017-05-17T20:26:42.000Z","updated_at":"2022-05-28T03:19:16.000Z","dependencies_parsed_at":"2022-08-29T23:01:01.285Z","dependency_job_id":null,"html_url":"https://github.com/ptv-logistics/Log4jALA","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ptv-logistics%2FLog4jALA","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ptv-logistics%2FLog4jALA/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ptv-logistics%2FLog4jALA/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ptv-logistics%2FLog4jALA/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ptv-logistics","download_url":"https://codeload.github.com/ptv-logistics/Log4jALA/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248843945,"owners_count":21170495,"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":["azure","azure-log-analytics","java","log-analysis","log4j"],"created_at":"2024-12-24T09:15:36.066Z","updated_at":"2025-04-14T08:14:29.783Z","avatar_url":"https://github.com/ptv-logistics.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Log4jALA\n\nLog4j appender fo Azure Log Analytics (ALA)... sending data to Azure Log Analytics with the [HTTP Data Collector API](https://docs.microsoft.com/en-us/azure/log-analytics/log-analytics-data-collector-api).\nThe data will also be logged/sent asynchronously for high performance and to avoid blocking the caller thread.\n\n## Get it\n\nRequirements\n------------\n\n* Java 1.8+\n\n\nMaven projects\n--------------\n\nIf your project is building using **Apache Maven 2** or above, put this artifact in your `pom.xml`\nto import the jar:\n\nYou can obtain this project as [Maven SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/com/github/ptv-logistics/log4jala/1.0.5-SNAPSHOT/)\n\n```xml\n\t\u003cdependency\u003e\n\t\t\u003cgroupId\u003ecom.github.ptv-logistics\u003c/groupId\u003e\n\t\t\u003cartifactId\u003elog4jala\u003c/artifactId\u003e\n\t\t\u003cversion\u003e1.0.5-SNAPSHOT\u003c/version\u003e\n\t\u003c/dependency\u003e\n``` \n\nor as [Maven RELEASE](https://oss.sonatype.org/content/repositories/releases/com/github/ptv-logistics/log4jala/1.0.4/) \n\n```xml\n\t\u003cdependency\u003e\n\t\t\u003cgroupId\u003ecom.github.ptv-logistics\u003c/groupId\u003e\n\t\t\u003cartifactId\u003elog4jala\u003c/artifactId\u003e\n\t\t\u003cversion\u003e1.0.4\u003c/version\u003e\n\t\u003c/dependency\u003e\n``` \n\n\nThe repository necessary to get the artifact is:\n\n```xml\n    \u003crepository\u003e\n            \u003cid\u003ecentral\u003c/id\u003e\n\t\t\t\u003cname\u003eCentral Repository\u003c/name\u003e\n            \u003curl\u003ehttps://oss.sonatype.org/content/repositories/releases\u003c/url\u003e\n    \u003c/repository\u003e\n```\n\nSNAPSHOT\n\n```xml\n    \u003crepository\u003e\n            \u003cid\u003ecentralsnaphot\u003c/id\u003e\n\t\t\t\u003cname\u003eCentral SNAPSHOT Repository\u003c/name\u003e\n            \u003curl\u003ehttps://oss.sonatype.org/content/repositories/snapshots\u003c/url\u003e\n    \u003c/repository\u003e\n```\n\n\nDependencies \n------------\n\ne.g. to use the appender in a servlet container e.g. tomcat please copy the following jar files to the lib dir:\n\n*  log4jala-*.jar mentioned above\n* [log4j-1.2.17.jar](https://repo1.maven.org/maven2/log4j/log4j/1.2.17/log4j-1.2.17.jar)\n* [jackson-databind-2.8.8.1.jar](https://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.8.8.1/jackson-databind-2.8.8.1.jar)\n* [jackson-annotations-2.8.0.jar](https://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.8.0/jackson-annotations-2.8.0.jar)\n* [jackson-core-2.8.8.jar](https://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-core/2.8.8/jackson-core-2.8.8.jar)\n* [httpclient-4.5.3.jar](https://repo1.maven.org/maven2/org/apache/httpcomponents/httpclient/4.5.3/httpclient-4.5.3.jar)\n* [commons-lang3-3.5.jar](https://repo1.maven.org/maven2/org/apache/commons/commons-lang3/3.5/commons-lang3-3.5.jar)\n* [commons-codec-1.9.jar](https://repo1.maven.org/maven2/commons-codec/commons-codec/1.9/commons-codec-1.9.jar)\n* [commons-logging-1.2.jar](https://repo1.maven.org/maven2/commons-logging/commons-logging/1.2/commons-logging-1.2.jar)\n* [httpcore-4.4.6.jar](https://repo1.maven.org/maven2/org/apache/httpcomponents/httpcore/4.4.6/httpcore-4.4.6.jar)\n\n\n\nOr reference it and use it according to the [License](./LICENSE).\n\n## Use it\n\nThis example is also available as a [AppTest.java](https://github.com/ptv-logistics/Log4jALA/blob/master/src/test/java/com/github/ptvlogistics/log4jala/AppTest.java):\n\n```java\n\n...\n...\n    public void testApp()\n    {\n\t\ttry {\n\n\t\t\tLogger logger = Logger.getLogger(\"Log4jALALogger\");\n\n\t\t\tfor (int i = 0; i \u003c 100; i++) {\n\t\t\t\tHashMap\u003cString, Object\u003e logMessage = new HashMap\u003cString, Object\u003e();\n\t\t\t\tlogMessage.put(\"id\", String.format(\"log-%d\", i));\n\t\t\t\tlogMessage.put(\"message\", String.format(\"test-%d\", i));\n\t\t\t\tlogger.info(logMessage);\n\t\t\t}\n\n\t\t\tThread.sleep((long) 20000);\n\t\t\tassertTrue( true );\n\t\t} catch (InterruptedException e) {\n\t\t\tassertTrue( false );\n\t\t\te.printStackTrace();\n\t\t}\n\n    }\n...\n...\n\n\n``` \n\n## Example Log4j Configuration file\n\nThis configuration is also available as a [log4j.xml](https://github.com/ptv-logistics/Log4jALA/blob/master/src/test/resources/log4j.xml):\n\n\n```xml\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\" ?\u003e\n\u003c!DOCTYPE log4j:configuration SYSTEM \"log4j.dtd\"\u003e\n\u003clog4j:configuration\u003e\n \n    \u003cappender name=\"Log4jALAAppender\" class=\"com.github.ptvlogistics.log4jala.Log4jALAAppender\"\u003e\n      \u003cparam name=\"workspaceId\" value=\"YOUR_WORKSPACE_ID\"/\u003e\n      \u003cparam name=\"sharedKey\" value=\"YOUR_SHARED_KEY\"/\u003e\n      \u003cparam name=\"logType\" value=\"YOUR_LOG_TYPE\"/\u003e\n\t  \u003c!-- optional environment: e.g. vm/computer-name or ip\n      \u003cparam name=\"environment\" value=\"YOUR_VM_IP_COMPUTERNAME\"/\u003e\n\t  --\u003e\n \t  \u003c!-- optional environment: e.g. vm/computer-name or ip\n      \u003cparam name=\"component\" value=\"YOUR_COMPONENT_NAME\"/\u003e\n \t  --\u003e\n \t  \u003c!-- optional version of the component\n      \u003cparam name=\"version\" value=\"YOUR_COMPONENT_VERSION\"/\u003e\n \t  --\u003e\n      \u003c!-- optional proxy host\n      \u003cparam name=\"proxyHost\" value=\"YOUR_PROXY_HOST\"/\u003e\n\t  --\u003e\n      \u003c!-- optional proxy port\n      \u003cparam name=\"proxyPort\" value=\"YOUR_PROXY_PORT\"/\u003e\n\t  --\u003e\n      \u003c!-- optional appendLogger to enable/disable sending the logger info \n           to Azure Log Analytics (default true)\n      \u003cparam name=\"appendLogger\" value=\"true\"/\u003e\n\t  --\u003e\n      \u003c!-- optional appendLogLevel to enable/disable sending the log level\n           to Azure Log Analytics (default true)\n      \u003cparam name=\"appendLogLevel\" value=\"true\"/\u003e\n\t  --\u003e\n\n      \u003cparam name=\"azureApiVersion\" value=\"2016-04-01\"/\u003e\n      \u003cfilter class=\"org.apache.log4j.varia.LevelRangeFilter\"\u003e\n        \u003cparam name=\"levelMin\" value=\"INFO\"/\u003e\n        \u003cparam name=\"levelMax\" value=\"FATAL\"/\u003e\n      \u003c/filter\u003e\n   \u003c/appender\u003e\n \n  \u003clogger name=\"Log4jALALogger\" additivity=\"false\"\u003e\n    \u003cappender-ref ref=\"Log4jALAAppender\" /\u003e\n  \u003c/logger\u003e\n   \n\u003c/log4j:configuration\u003e\n``` \n\nor log4j property file:\n\n```\nlog4j.appender.ala=com.github.ptvlogistics.log4jala.Log4jALAAppender\nlog4j.appender.ala.layout=org.apache.log4j.PatternLayout\nlog4j.appender.ala.workspaceId=YOUR_WORKSPACE_ID\nlog4j.appender.ala.sharedKey=YOUR_SHARED_KEY\nlog4j.appender.ala.logType=YOUR_LOG_TYPE\n#optional environment: e.g. vm/computer-name or ip\n#log4j.appender.ala.environment=IAAXSEUWE000002\n#optional component: e.g. API or MW\n#log4j.appender.ala.component=API\n#optional version of the component\n#log4j.appender.ala.version=1.0.4\n#optional proxy host\n#log4j.appender.ala.proxyHost=YOUR_PROXY_HOST\n#optional proxy port\n#log4j.appender.ala.proxyPort=YOUR_PROXY_PORT\n#optional appendLogger to enable/disable sending the logger info \n#to Azure Log Analytics (default true)\n#log4j.appender.ala.appendLogger=true\n#optional appendLogLevel to enable/disable sending the log level \n#to Azure Log Analytics (default true)\n#log4j.appender.ala.appendLogLevel=true\n...\n...\nlog4j.logger.com.YOURPACKAGE=INFO,ala\nlog4j.rootLogger=ERROR,ala\n```\n\n\n## Issues\n\nKeep in mind that this library won't assure that your JSON payloads are being indexed, it will make sure that the HTTP Data Collection API [responds an Accept](https://azure.microsoft.com/en-us/documentation/articles/log-analytics-data-collector-api/#return-codes) but there is no way (right now) to know when has the payload been indexed completely... see also [SLA for Log Analytics](https://azure.microsoft.com/en-gb/support/legal/sla/log-analytics/v1_1/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fptv-logistics%2Flog4jala","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fptv-logistics%2Flog4jala","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fptv-logistics%2Flog4jala/lists"}