From 055ad2f0ae21122f62f5e129f115d49da88b059b Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Wed, 30 Dec 2020 13:22:36 +0100 Subject: [PATCH] IDEMPIERE-4619 Improve CLogger fallback when reaching 100 files in /log folder (#492) --- .../src/org/compiere/util/CLogFile.java | 40 ++++++++++++++++--- 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/org.adempiere.base/src/org/compiere/util/CLogFile.java b/org.adempiere.base/src/org/compiere/util/CLogFile.java index 11757f9b51..abc4473f5b 100644 --- a/org.adempiere.base/src/org/compiere/util/CLogFile.java +++ b/org.adempiere.base/src/org/compiere/util/CLogFile.java @@ -138,16 +138,16 @@ public class CLogFile extends Handler // Test/Create idempiereHome/log/file if (fileName != null) { - fileName += File.separator; + String dateFileName = fileName + File.separator; if (isClient) - fileName += "client."; + dateFileName += "client."; else - fileName += "idempiere."; + dateFileName += "idempiere."; m_fileNameDate = getFileNameDate(System.currentTimeMillis()); - fileName += m_fileNameDate + "_"; - for (int i = 0; i < 100; i++) + dateFileName += m_fileNameDate + "_"; + for (int i = 0; i < 100; i++) // max 100 files with date { - String finalName = fileName + i + ".log"; + String finalName = dateFileName + i + ".log"; File file = new File(finalName); if (!file.exists()) { @@ -156,7 +156,22 @@ public class CLogFile extends Handler } } } + if (m_file == null) { // Fallback to date+time filename + String timeFileName = fileName + File.separator; + if (isClient) + timeFileName += "client."; + else + timeFileName += "idempiere."; + String fileNameTime = getFileNameDateTime(System.currentTimeMillis()); + String finalName = timeFileName + fileNameTime + ".log"; + File file = new File(finalName); + if (!file.exists()) + { + m_file = file; + } + } if (m_file == null) { // Fallback create temp file + // would be very weird to arrive here, but preserving anyways as an extra fallback measure m_fileNameDate = getFileNameDate(System.currentTimeMillis()); m_file = File.createTempFile("idempiere"+m_fileNameDate + "_", ".log"); } @@ -182,6 +197,19 @@ public class CLogFile extends Handler return s.substring(0, 10); } // getFileNameDate + /** + * Get File Name DateTime portion + * @param time time in ms + * @return DateTime String on Seconds + */ + public static String getFileNameDateTime (long time) + { + Timestamp ts = new Timestamp(time); + String s = ts.toString(); + s = s.replaceAll("[ :]", "-"); + return s.substring(0, 19); // seconds + } // getFileNameDate + /** * Rotate Log when day changes * @param time time