Joget DX 8 Stable Released
The stable release for Joget DX 8 is now available, with a focus on UX and Governance.
...
Chinese |
---|
让我们先从基础开始。为了正确写入日志文件,我们应该使用LogUtil (源代码: https://github.com/jogetworkflow/jw-community/blob/6.0-SNAPSHOT/wflow-commons/src/main/java/org/joget/commons/util/LogUtil.java)实用程序类。 在编写我们自己的插件时,我们不应使用以下内容打印日志。 |
Thai |
---|
เริ่มจากพื้นฐานกันก่อน ในการเขียนไฟล์บันทึกอย่างถูกต้องเราควรใช้ LogUtil (ซอร์สโค้ด: https://github.com/jogetworkflow/jw-community/blob/6.0-SNAPSHOT/wflow-commons/src/main/java/org/joget/commons/util/LogUtil.java) คลาสยูทิลิตี้ เมื่อเขียนปลั๊กอินของเราเราไม่ควรใช้สิ่งต่อไปนี้เพื่อพิมพ์บันทึก |
Code Block | ||
---|---|---|
| ||
System.out.println("Execution is successful"); |
...
Chinese |
---|
这是因为此消息行将出现在catalina.out中,而不出现在默认的Joget日志文件joget.log中。 相反,我们应该利用LogUtil提供的这些方法。在Email Tool使用的代码中查看一些示例 (源代码: https://github.com/jogetworkflow/jw-community/blob/6.0-SNAPSHOT/wflow-core/src/main/java/org/joget/apps/app/lib/EmailTool.java#L227) |
Thai |
---|
นี่เป็นเพราะบรรทัดข้อความนี้จะปรากฏใน catalina.out แทนไฟล์บันทึก Joget เริ่มต้น joget.log แต่เราควรใช้ประโยชน์จากวิธีการเหล่านี้โดย LogUtil ดูตัวอย่างในรหัสที่ใช้โดยเครื่องมืออีเมล (ซอร์สโค้ด: https://github.com/jogetworkflow/jw-community/blob/6.0-SNAPSHOT/wflow-core/src/main/java/org/joget/apps/app/lib/EmailTool.java#L227) |
Code Block | ||
---|---|---|
| ||
LogUtil.info(EmailTool.class.getName(), "EmailTool: Sending email from=" + email.getFromAddress().toString() + ", to=" + to + "cc=" + cc + ", bcc=" + bcc + ", subject=" + email.getSubject()); LogUtil.info(EmailTool.class.getName(), "EmailTool: Sending email completed for subject=" + email.getSubject()); LogUtil.error(EmailTool.class.getName(), ex, ""); |
...
Chinese |
---|
您可能已经注意到默认情况下,由于电子邮件工具和相关插件正在写入此特定文件,因此我们将日志文件命名为email.log。我们还可以考虑使用这种方法来分解写入单个日志文件的行数,以更好地进行故障排除。 导航到“ [JogetFolder] \ apache-tomcat-8.5.23 \ webapps \ jw \ WEB-INF \ classes \ log4j.properties”配置文件,并检查R2标签的使用,以了解EmailTool,UserNotificationAuditTrail和ExportFormEmailTool如何写入email.log文件。 |
Thai |
---|
คุณอาจสังเกตเห็นแล้วว่าโดยค่าเริ่มต้นเรามีไฟล์บันทึกชื่อเป็น email.log เป็นเครื่องมืออีเมลและปลั๊กอินที่เกี่ยวข้องกำลังเขียนลงในไฟล์นี้โดยเฉพาะ นอกจากนี้เรายังสามารถพิจารณาใช้วิธีนี้เพื่อแยกจำนวนบรรทัดที่เขียนลงในไฟล์บันทึกเดียวเพื่อการแก้ไขปัญหาที่ดี นำทางไปยังไฟล์กำหนดค่า "[JogetFolder] \ apache-tomcat-8.5.23 \ webapps \ jw \ WEB-INF \ คลาส \ log4j.properties" และตรวจสอบการใช้แท็ก R2 เพื่อดูว่า EmailTool, UserNotificationAuditTrail และ ExportFormEmailTool เป็นอย่างไร แล้วเขียนลงในไฟล์ email.log |
Code Block | ||||
---|---|---|---|---|
| ||||
log4j.logger.org.joget.apps.app.lib.EmailTool=DEBUG, R2 log4j.logger.org.joget.apps.app.lib.UserNotificationAuditTrail=DEBUG, R2 log4j.logger.org.joget.plugin.enterprise.ExportFormEmailTool=DEBUG, R2 # A1 is set to be a ConsoleAppender. log4j.appender.A1=org.apache.log4j.ConsoleAppender # A1 uses PatternLayout. log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%-5p %d{dd MMM yyyy HH:mm:ss} %c %x - %m%n # R is set to be DailyRollingFileAppender log4j.appender.R=org.apache.log4j.DailyRollingFileAppender log4j.appender.R.File=${catalina.home}/logs/joget.log log4j.appender.R.DatePattern='.'yyyyMMdd log4j.appender.R.layout=org.apache.log4j.PatternLayout log4j.appender.R.layout.ConversionPattern=%-5p %d{dd MMM yyyy HH:mm:ss} %c %x - %m%n # R2 is set to be DailyRollingFileAppender log4j.appender.R2=org.apache.log4j.DailyRollingFileAppender log4j.appender.R2.File=${catalina.home}/logs/email.log log4j.appender.R2.DatePattern='.'yyyyMMdd log4j.appender.R2.layout=org.apache.log4j.EnhancedPatternLayout log4j.appender.R2.layout.ConversionPattern=%-5p %d{dd MMM yyyy HH:mm:ss} %-50c - %m%throwable{0}%n |
...
Chinese |
---|
在上一节中,我们讨论了使用LogUtil写入日志文件以及如何写入单独的文件。当我们在同一个Joget副本中运行太多应用程序时,有时会将某些消息行追溯到触发它们的Joget应用程序的来源。 例如,让我们看一下这些日志消息。 |
Thai |
---|
ในส่วนด้านบนเราได้พูดคุยเกี่ยวกับการใช้ LogUtil เพื่อเขียนลงในล็อกไฟล์และวิธีเขียนลงในไฟล์แยกกันด้วย เมื่อเรามีแอพจำนวนมากที่ทำงานอยู่ใน Joget เดียวกันบางครั้งก็มีการติดตามข้อความบางข้อความถึงต้นกำเนิดของแอพ Joget ที่เรียกใช้งาน ตัวอย่างเช่นลองดูที่ข้อความบันทึกเหล่านี้ |
Code Block | ||||
---|---|---|---|---|
| ||||
ERROR 17 Jun 2019 17:29:39 org.joget.apps.app.lib.EmailTool - org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.outlook.comtest:587 org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.outlook.comtest:587 at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1421) at org.apache.commons.mail.Email.send(Email.java:1448) at org.joget.apps.app.lib.EmailTool$1.run(EmailTool.java:239) at java.lang.Thread.run(Thread.java:748) at org.joget.commons.util.PluginThread.run(PluginThread.java:22) |
...
Chinese |
---|
我们无法确定从哪个Joget应用程序触发了EmailTool。但是,在Process Tool的execute方法中,我们可以获得包含Joget应用程序信息的appDef对象。 查看下面的示例代码。 |
Thai |
---|
ไม่มีวิธีที่เราสามารถบอกได้ว่าแอพ Joget ใดที่ EmailTool ทำงาน อย่างไรก็ตามในวิธีการดำเนินการของเครื่องมือประมวลผลเราสามารถรับวัตถุ appDef ซึ่งมีข้อมูลแอป Joget ลองดูโค้ดตัวอย่างด้านล่าง |
Code Block | ||||
---|---|---|---|---|
| ||||
public Object execute(Map properties) { AppDefinition appDef = (AppDefinition) properties.get("appDef"); String appInfoAndMessage = appDef.toString() + "- Something happened"; LogUtil.error(EmailTool.class.getName(), ex, appInfoAndMessage); } |
...
Chinese |
---|
这样,我们将能够跟踪到触发并在日志文件中写入消息行的应用程序。 |
Thai |
---|
ด้วยวิธีนี้เราจะสามารถติดตามไปยังแอปพลิเคชันที่เรียกใช้และเขียนบรรทัดข้อความในไฟล์บันทึก |
Info | |||||||||
---|---|---|---|---|---|---|---|---|---|
| |||||||||
The object "appDef" is available in the following type of plugins.
In other plugin types, we can try to obtain the App Definition object by using the following codes.
|
...
Chinese |
---|
我们可以考虑对日志文件进行LogRotate。请查看以下链接: |
Thai |
---|
เราสามารถพิจารณา LogRotate ไฟล์บันทึก โปรดดูลิงค์ต่อไปนี้: - |
...
Chinese |
---|
至于joget.log,我们已经使用Log4J进行旋转了,如上面的log4j.properties文件片段所示。 |
Thai |
---|
สำหรับ joget.log เราใช้ Log4J สำหรับการหมุนดังที่แสดงในตัวอย่างไฟล์ log4j.properties ด้านบน |