<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: OptiJava</title>
    <description>The latest articles on DEV Community by OptiJava (@optijava).</description>
    <link>https://dev.to/optijava</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F869866%2Fd8c91c0e-f09e-4d59-88e3-b98c4a2a4e09.png</url>
      <title>DEV Community: OptiJava</title>
      <link>https://dev.to/optijava</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/optijava"/>
    <language>en</language>
    <item>
      <title>How to optimize the performance of write files.</title>
      <dc:creator>OptiJava</dc:creator>
      <pubDate>Wed, 15 Jun 2022 07:22:11 +0000</pubDate>
      <link>https://dev.to/optijava/how-to-optimize-the-performance-of-write-files-45e4</link>
      <guid>https://dev.to/optijava/how-to-optimize-the-performance-of-write-files-45e4</guid>
      <description>&lt;p&gt;Thank you.&lt;/p&gt;

</description>
      <category>help</category>
      <category>java</category>
    </item>
    <item>
      <title>My project on github.</title>
      <dc:creator>OptiJava</dc:creator>
      <pubDate>Sat, 11 Jun 2022 14:43:20 +0000</pubDate>
      <link>https://dev.to/optijava/my-project-on-github-35nl</link>
      <guid>https://dev.to/optijava/my-project-on-github-35nl</guid>
      <description>&lt;h2&gt;
  
  
  &lt;a href="https://github.com/OptiJava/Optilog-Client"&gt;Optilog-Client&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/OptiJava/Optilog-Client/blob/master/README.md"&gt;中文&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This is an open source logging framework written in Java language. It has more advantages than other open source logging frameworks (such as log4j and slf4j).&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The wiki of Optilog will be updated at any time. Problems or bugs will be raised on &lt;a href="https://github.com/OptiJava/Optilog-Client/issues"&gt;issues&lt;/a&gt; or &lt;a href="https://github.com/OptiJava/Optilog-Client/discussions"&gt;discussions&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Be sure to read the &lt;a href="https://github.com/OptiJava/Optilog-Client/wiki"&gt;wiki&lt;/a&gt; of this project before using it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If you like, you are welcome to contribute to Optilog through fork. The code of this project is quite basic, and anyone can contribute.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Optilog advantages
&lt;/h2&gt;

&lt;p&gt;0.&lt;del&gt;Frequent updates(log4j and slf4j have no update since 2017..)&lt;/del&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;high performance: After initialization, another log (output to the screen + output to a file + output to the server through socket) can be output as fast as 8 milliseconds (it will be optimized later). Log4j should be at least 41 milliseconds.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Placeholder convenience: optilog supports unlimited placeholders and can be reused (#1 #1 outputs the first placeholder twice). Log4j only supports 9 placeholders.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Configuration file can be placed in any location. The name of the configuration file is unlimited. Two types of configuration files are supported. In log4j, the configuration file can only be in classpath and the name can only be log4j2 xml.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Support the client to send logs to &lt;a href="https://github.com/OptiJava/Optilog-Server"&gt;Server&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;All possible exceptions in Optilog are basically captured without affecting the main logic.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You only need one jar package, and you can use it directly by typing in the classpath (I don't know the feeling of adding dozens of jar packages at once when using gradle).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Suitable for beginners without complex configuration files.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Few &lt;a href="https://github.com/OptiJava/Optilog-Client/blob/master/README-en.md#dependency"&gt;dependence&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Class, method and other information output in the log are absolutely accurate, because Optilog uses StackTraceElement internally to determine these information, and there is no need to write the class instance when initializing the log.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Optilog can directly generate a default configuration file. Beginners do not need to look for the configuration file example (&lt;a href="https://github.com/OptiJava/Optilog-Client/wiki/%E6%9B%B4%E5%A4%9A%E5%8A%9F%E8%83%BD#%E5%85%AD%E7%94%9F%E6%88%90%E9%BB%98%E8%AE%A4%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6"&gt;Tutorial&lt;/a&gt;).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Support configuration files in multiple formats, including JSON, yaml, XML and properties. Support for .toml configuration files will be added later.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Optilog supports configuration modification during runtime. Of course, only some configuration items of true and false can be modified. Output file paths cannot be modified.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Support outputting logs to JDBC.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Optilog log picture:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LUqo5fKd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/106148777/170864247-7da18dd5-f5b9-4e5c-aee7-4174d29a8969.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LUqo5fKd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/106148777/170864247-7da18dd5-f5b9-4e5c-aee7-4174d29a8969.png" alt="image" width="880" height="445"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Generate by &lt;a href="https://carbon.now.sh"&gt;carbon.now.sh&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Dependency:
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;com.google.code.gson:gson:2.9.0&lt;/code&gt;&lt;br&gt;
\&lt;br&gt;
&lt;code&gt;com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.13.3&lt;/code&gt;&lt;br&gt;
\&lt;br&gt;
&lt;code&gt;org.yaml:snakeyaml:1.30&lt;/code&gt; &lt;code&gt;mysql:mysql-connector-java:8.0.29&lt;/code&gt;&lt;br&gt;
\&lt;br&gt;
&lt;code&gt;mysql:mysql-connector-java:8.0.29&lt;/code&gt;&lt;br&gt;
\&lt;br&gt;
(You needn't add dependency if you don't use these function.)&lt;/p&gt;

&lt;h2&gt;
  
  
  Contributor:
&lt;/h2&gt;

&lt;p&gt;JavauserO&lt;/p&gt;

&lt;h2&gt;
  
  
  Future plans
&lt;/h2&gt;

&lt;p&gt;realize remote call&lt;/p&gt;

</description>
      <category>java</category>
      <category>github</category>
      <category>opensource</category>
    </item>
    <item>
      <title>My Project-Optilog</title>
      <dc:creator>OptiJava</dc:creator>
      <pubDate>Mon, 30 May 2022 09:34:02 +0000</pubDate>
      <link>https://dev.to/optijava/optilog-a-convenient-logging-framework-khf</link>
      <guid>https://dev.to/optijava/optilog-a-convenient-logging-framework-khf</guid>
      <description>&lt;h2&gt;
  
  
  &lt;a href="https://github.com/OptiJava/Optilog-Client"&gt;Optilog-Client&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/OptiJava/Optilog-Client/blob/master/README.md"&gt;中文&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This is an open source logging framework written in java. Optilog has more &lt;a href="https://github.com/OptiJava/Optilog-Client#optilog%E7%9A%84%E4%BC%98%E5%8A%BF"&gt;advantages&lt;/a&gt; than other open source logging frameworks (such as log4j and SLF4j)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The wiki of Optilog will be updated at any time. If there is a problem, ask the issues. You should see this project &lt;a href="https://github.com/OptiJava/Optilog-Client/wiki"&gt;wiki&lt;/a&gt; before use Optilog.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/OptiJava/Optilog-Server"&gt;OptilogServer&lt;/a&gt; matched with OptilogClient. See wiki for details.&lt;/p&gt;

&lt;p&gt;If you like, you are welcome to contribute to Optilog through fork. The code of this project is quite basic. Anyone can&lt;br&gt;
contribute.&lt;/p&gt;

&lt;h2&gt;
  
  
  Optilog advantages
&lt;/h2&gt;

&lt;p&gt;1.High performance: After initialization log, output a log (output to the screen + output to a file + output to the server through socket) only takes 8 milliseconds at most (it will be optimized later), and log4j takes at least 41&lt;br&gt;
milliseconds.&lt;/p&gt;

&lt;p&gt;2.Optilog supports unlimited placeholders and can be reused (#1 #1 outputs the first placeholder twice). Log4j only supports 9 placeholders.&lt;/p&gt;

&lt;p&gt;3.The configuration file can be placed in any location. The name of the configuration file is unlimited. Two types of configuration files are supported. In log4j, the configuration file can only be in classpath and the name can only be&lt;br&gt;
log4j2 XML&lt;/p&gt;

&lt;p&gt;4.Support the client to send logs to the server(See details in &lt;a href="https://github.com/OptiJava/Optilog-Client/wiki"&gt;wiki&lt;/a&gt;.Download OptilogServer in &lt;a href="https://github.com/OptiJava/Optilog-Server"&gt;OptilogServer&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;5.All possible exceptions in optilog are captured without affecting the main logic.&lt;/p&gt;

&lt;p&gt;6.You only need one jar package, and you can use it directly by typing in the classpath (I don't know the feeling of adding dozens of jar packages at once when using gradle)&lt;/p&gt;

&lt;p&gt;7.Suitable for beginners without complex configuration files&lt;/p&gt;

&lt;p&gt;8.There are few dependencies&lt;/p&gt;

&lt;p&gt;9.Class, method and other information output in the log is absolutely accurate, because optilog uses stacktrace to determine this information internally, and there is no need to write the class instance when initializing the log&lt;/p&gt;

&lt;p&gt;10.Optilog can directly generate a default configuration file. Beginners do not need to look for configuration file examples&lt;/p&gt;

&lt;p&gt;11.Support configuration files in multiple formats, including JSON,YAML, XML and properties. Support for toml configuration files will be added later&lt;/p&gt;

&lt;h2&gt;
  
  
  Defects of optilog
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;No JDBC support &amp;lt;- On 2022/6/7,Optilog can send log to DataBase,Optilog already support jdbc!!!&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Optilog log picture:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LUqo5fKd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/106148777/170864247-7da18dd5-f5b9-4e5c-aee7-4174d29a8969.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LUqo5fKd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/106148777/170864247-7da18dd5-f5b9-4e5c-aee7-4174d29a8969.png" alt="image" width="880" height="445"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Generate by &lt;a href="https://carbon.now.sh"&gt;carbon.now.sh&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Dependency:
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;com.google.code.gson:gson:2.9.0&lt;/code&gt; &lt;code&gt;com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.13.3&lt;/code&gt; &lt;code&gt;org.yaml:snakeyaml:1.30&lt;/code&gt; &lt;code&gt;mysql:mysql-connector-java:8.0.29&lt;/code&gt;(&lt;br&gt;
You needn't add dependency if you don't use these&lt;br&gt;
function.)&lt;/p&gt;

&lt;h2&gt;
  
  
  Author:
&lt;/h2&gt;

&lt;p&gt;OptiJava&lt;/p&gt;

&lt;h2&gt;
  
  
  Contributor:
&lt;/h2&gt;

&lt;p&gt;JavauserO&lt;/p&gt;

&lt;h2&gt;
  
  
  Future plans
&lt;/h2&gt;

&lt;p&gt;realize remote call&lt;/p&gt;

</description>
      <category>java</category>
      <category>opensource</category>
      <category>github</category>
    </item>
  </channel>
</rss>
