{"id":22453,"date":"2024-03-15T23:37:27","date_gmt":"2024-03-15T23:37:27","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/how-to-output-log-files-in-log4j2-based-on-classes\/"},"modified":"2024-03-21T22:55:09","modified_gmt":"2024-03-21T22:55:09","slug":"how-to-output-log-files-in-log4j2-based-on-classes","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/how-to-output-log-files-in-log4j2-based-on-classes\/","title":{"rendered":"How to output log files in log4j2 based on classes?"},"content":{"rendered":"<p>In log4j2, log messages can be directed to different files based on the class name. To do this, one must first define one or more Loggers in the log4j2 configuration file, specifying their names and the files to output to.<\/p>\n<p>Here is an example configuration file content of log4j2.xml:<\/p>\n<pre class=\"post-pre\"><code><span class=\"hljs-meta\">&lt;?xml version=<span class=\"hljs-string\">\"1.0\"<\/span> encoding=<span class=\"hljs-string\">\"UTF-8\"<\/span>?&gt;<\/span>\r\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">Configuration<\/span> <span class=\"hljs-attr\">status<\/span>=<span class=\"hljs-string\">\"WARN\"<\/span>&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">Appenders<\/span>&gt;<\/span>\r\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">File<\/span> <span class=\"hljs-attr\">name<\/span>=<span class=\"hljs-string\">\"FileAppender1\"<\/span> <span class=\"hljs-attr\">fileName<\/span>=<span class=\"hljs-string\">\"logs\/app1.log\"<\/span>&gt;<\/span>\r\n            <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">PatternLayout<\/span> <span class=\"hljs-attr\">pattern<\/span>=<span class=\"hljs-string\">\"%d [%t] %-5level %logger{36} - %msg%n\"<\/span> \/&gt;<\/span>\r\n        <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">File<\/span>&gt;<\/span>\r\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">File<\/span> <span class=\"hljs-attr\">name<\/span>=<span class=\"hljs-string\">\"FileAppender2\"<\/span> <span class=\"hljs-attr\">fileName<\/span>=<span class=\"hljs-string\">\"logs\/app2.log\"<\/span>&gt;<\/span>\r\n            <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">PatternLayout<\/span> <span class=\"hljs-attr\">pattern<\/span>=<span class=\"hljs-string\">\"%d [%t] %-5level %logger{36} - %msg%n\"<\/span> \/&gt;<\/span>\r\n        <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">File<\/span>&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">Appenders<\/span>&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">Loggers<\/span>&gt;<\/span>\r\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">Logger<\/span> <span class=\"hljs-attr\">name<\/span>=<span class=\"hljs-string\">\"com.example.app1\"<\/span> <span class=\"hljs-attr\">level<\/span>=<span class=\"hljs-string\">\"debug\"<\/span> <span class=\"hljs-attr\">additivity<\/span>=<span class=\"hljs-string\">\"false\"<\/span>&gt;<\/span>\r\n            <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">AppenderRef<\/span> <span class=\"hljs-attr\">ref<\/span>=<span class=\"hljs-string\">\"FileAppender1\"<\/span> \/&gt;<\/span>\r\n        <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">Logger<\/span>&gt;<\/span>\r\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">Logger<\/span> <span class=\"hljs-attr\">name<\/span>=<span class=\"hljs-string\">\"com.example.app2\"<\/span> <span class=\"hljs-attr\">level<\/span>=<span class=\"hljs-string\">\"debug\"<\/span> <span class=\"hljs-attr\">additivity<\/span>=<span class=\"hljs-string\">\"false\"<\/span>&gt;<\/span>\r\n            <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">AppenderRef<\/span> <span class=\"hljs-attr\">ref<\/span>=<span class=\"hljs-string\">\"FileAppender2\"<\/span> \/&gt;<\/span>\r\n        <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">Logger<\/span>&gt;<\/span>\r\n        <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">Root<\/span> <span class=\"hljs-attr\">level<\/span>=<span class=\"hljs-string\">\"error\"<\/span>&gt;<\/span>\r\n            <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">AppenderRef<\/span> <span class=\"hljs-attr\">ref<\/span>=<span class=\"hljs-string\">\"FileAppender1\"<\/span> \/&gt;<\/span>\r\n        <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">Root<\/span>&gt;<\/span>\r\n    <span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">Loggers<\/span>&gt;<\/span>\r\n<span class=\"hljs-tag\">&lt;\/<span class=\"hljs-name\">Configuration<\/span>&gt;<\/span>\r\n<\/code><\/pre>\n<p>In the configuration file above, two FileAppenders are defined to output to two different files (app1.log and app2.log). Two Loggers are then defined to correspond to two different classes (com.example.app1 and com.example.app2), each specifying which FileAppender to use.<\/p>\n<p>Therefore, when the logs in these two classes are printed, they will be output to the corresponding files based on the class name. Additionally, a Root Logger is defined to output all other logs that are not specified with a FileAppender to the file corresponding to FileAppender1.<\/p>\n<p>Please note that the log4j2.xml configuration file must be placed in the classpath for log4j2 to locate and load it.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In log4j2, log messages can be directed to different files based on the class name. To do this, one must first define one or more Loggers in the log4j2 configuration file, specifying their names and the files to output to. Here is an example configuration file content of log4j2.xml: &lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;UTF-8&#8243;?&gt; &lt;Configuration status=&#8221;WARN&#8221;&gt; &lt;Appenders&gt; [&hellip;]<\/p>\n","protected":false},"author":8,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-22453","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to output log files in log4j2 based on classes? - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/blog\/how-to-output-log-files-in-log4j2-based-on-classes\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to output log files in log4j2 based on classes?\" \/>\n<meta property=\"og:description\" content=\"In log4j2, log messages can be directed to different files based on the class name. To do this, one must first define one or more Loggers in the log4j2 configuration file, specifying their names and the files to output to. Here is an example configuration file content of log4j2.xml: &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; &lt;Configuration status=&quot;WARN&quot;&gt; &lt;Appenders&gt; [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/how-to-output-log-files-in-log4j2-based-on-classes\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-15T23:37:27+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-03-21T22:55:09+00:00\" \/>\n<meta name=\"author\" content=\"William Carter\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:site\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"William Carter\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-output-log-files-in-log4j2-based-on-classes\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-output-log-files-in-log4j2-based-on-classes\/\"},\"author\":{\"name\":\"William Carter\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/f697031891aacefc4b681d139781d3c0\"},\"headline\":\"How to output log files in log4j2 based on classes?\",\"datePublished\":\"2024-03-15T23:37:27+00:00\",\"dateModified\":\"2024-03-21T22:55:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-output-log-files-in-log4j2-based-on-classes\/\"},\"wordCount\":178,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-output-log-files-in-log4j2-based-on-classes\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/how-to-output-log-files-in-log4j2-based-on-classes\/\",\"name\":\"How to output log files in log4j2 based on classes? - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-15T23:37:27+00:00\",\"dateModified\":\"2024-03-21T22:55:09+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-output-log-files-in-log4j2-based-on-classes\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/how-to-output-log-files-in-log4j2-based-on-classes\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-output-log-files-in-log4j2-based-on-classes\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to output log files in log4j2 based on classes?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"name\":\"Silicon Cloud Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\",\"name\":\"Silicon Cloud Blog\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"contentUrl\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"width\":1024,\"height\":1024,\"caption\":\"Silicon Cloud Blog\"},\"image\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\",\"https:\/\/twitter.com\/SiliCloudGlobal\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/f697031891aacefc4b681d139781d3c0\",\"name\":\"William Carter\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1786698071dd8d74bec894b512f9e3c610c3a2a32985f67e688976cee3c8bbef?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/1786698071dd8d74bec894b512f9e3c610c3a2a32985f67e688976cee3c8bbef?s=96&d=mm&r=g\",\"caption\":\"William Carter\"},\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/williamcarter\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How to output log files in log4j2 based on classes? - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/blog\/how-to-output-log-files-in-log4j2-based-on-classes\/","og_locale":"en_US","og_type":"article","og_title":"How to output log files in log4j2 based on classes?","og_description":"In log4j2, log messages can be directed to different files based on the class name. To do this, one must first define one or more Loggers in the log4j2 configuration file, specifying their names and the files to output to. Here is an example configuration file content of log4j2.xml: &lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt; &lt;Configuration status=\"WARN\"&gt; &lt;Appenders&gt; [&hellip;]","og_url":"https:\/\/www.silicloud.com\/blog\/how-to-output-log-files-in-log4j2-based-on-classes\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-15T23:37:27+00:00","article_modified_time":"2024-03-21T22:55:09+00:00","author":"William Carter","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"William Carter","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/how-to-output-log-files-in-log4j2-based-on-classes\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-output-log-files-in-log4j2-based-on-classes\/"},"author":{"name":"William Carter","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/f697031891aacefc4b681d139781d3c0"},"headline":"How to output log files in log4j2 based on classes?","datePublished":"2024-03-15T23:37:27+00:00","dateModified":"2024-03-21T22:55:09+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-output-log-files-in-log4j2-based-on-classes\/"},"wordCount":178,"commentCount":0,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/how-to-output-log-files-in-log4j2-based-on-classes\/","url":"https:\/\/www.silicloud.com\/blog\/how-to-output-log-files-in-log4j2-based-on-classes\/","name":"How to output log files in log4j2 based on classes? - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-15T23:37:27+00:00","dateModified":"2024-03-21T22:55:09+00:00","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-output-log-files-in-log4j2-based-on-classes\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/how-to-output-log-files-in-log4j2-based-on-classes\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/how-to-output-log-files-in-log4j2-based-on-classes\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to output log files in log4j2 based on classes?"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/blog\/#website","url":"https:\/\/www.silicloud.com\/blog\/","name":"Silicon Cloud Blog","description":"","publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.silicloud.com\/blog\/#organization","name":"Silicon Cloud Blog","url":"https:\/\/www.silicloud.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","contentUrl":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","width":1024,"height":1024,"caption":"Silicon Cloud Blog"},"image":{"@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/SiliCloudGlobal\/","https:\/\/twitter.com\/SiliCloudGlobal"]},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/f697031891aacefc4b681d139781d3c0","name":"William Carter","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/1786698071dd8d74bec894b512f9e3c610c3a2a32985f67e688976cee3c8bbef?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1786698071dd8d74bec894b512f9e3c610c3a2a32985f67e688976cee3c8bbef?s=96&d=mm&r=g","caption":"William Carter"},"url":"https:\/\/www.silicloud.com\/blog\/author\/williamcarter\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/22453","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=22453"}],"version-history":[{"count":1,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/22453\/revisions"}],"predecessor-version":[{"id":56376,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/22453\/revisions\/56376"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=22453"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=22453"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=22453"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}