Browse Source

fix logging

herlanS_ 4 years ago
parent
commit
506b5a7bd1

+ 5 - 0
pom.xml

@@ -32,6 +32,11 @@
 			</exclusions>
 		</dependency>
 
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-actuator</artifactId>
+		</dependency>
+
 		<dependency>
 			<groupId>org.springframework.boot</groupId>
 			<artifactId>spring-boot-starter-log4j2</artifactId>

+ 1 - 5
src/main/kotlin/co/id/datacomsolusindo/ipphonebridge/BridgeFIlter.kt

@@ -80,6 +80,7 @@ class BridgeFilter(private val template: SimpMessagingTemplate, val resourceLoad
                 client.startsWith("_")
                 || client.startsWith("resources")
                 || client.startsWith("clientStat")
+                || client.startsWith("actuator")
         ) {
             chain.doFilter(request, response)
             return
@@ -243,11 +244,6 @@ class SocketChecker {
     @Throws(Exception::class)
     fun responseMsg(message: SocketChunkData, @DestinationVariable("id") id: String): MutableMap<*, *> {
         try {
-//            println(message.body)
-//            println(message.header)
-//            println(message.status)
-//            println(message.part)
-//            println(message.totalPart)
             if (message.totalPart == 1) {
                 Singletons.responseQue[id] = Resp(
                         message.body,

+ 77 - 101
src/main/kotlin/co/id/datacomsolusindo/ipphonebridge/IpPhoneBridgeApplication.kt

@@ -25,6 +25,7 @@ import java.io.Serializable
 import java.time.LocalDateTime
 import java.time.format.DateTimeFormatter
 import java.util.*
+import kotlin.system.exitProcess
 import kotlin.system.measureTimeMillis
 
 
@@ -35,50 +36,22 @@ class IpPhoneBridgeApplication
 fun main(args: Array<String>) {
     TimeZone.setDefault(TimeZone.getTimeZone("Asia/Jakarta"))
     val properties = Properties()
-    val ini = Wini(File("conf/general.ini"))
-    properties["server.port"] = ini.get("server", "port")
+    val confFile = File("conf/general.ini")
+    if (confFile.exists()) {
+        val ini = Wini(File("conf/general.ini"))
+        properties["server.port"] = ini.get("server", "port")
+    } else {
+        properties["server.port"] = System.getenv("PORT")
+    }
+    if (properties["server.port"] == null) {
+        println("undefined port")
+        exitProcess(1)
+    }
+
     val sApp = SpringApplication(IpPhoneBridgeApplication::class.java)
 
     sApp.setDefaultProperties(properties)
     sApp.run(*args)
-
-    val builder = ConfigurationBuilderFactory.newConfigurationBuilder()
-    val console = builder.newAppender("stdout", "Console")
-
-    val appLog = builder.newAppender("appLog", "RollingFile")
-    appLog.addAttribute("fileName", "log/app/app.log")
-    appLog.addAttribute("filePattern", "log/app/\$\${date:yyyy - MM}/app-%d{yyyy-MM-dd}-%i.log.zip")
-
-    val flow: FilterComponentBuilder = builder.newFilter(
-            "MarkerFilter",
-            Filter.Result.ACCEPT,
-            Filter.Result.DENY)
-    flow.addAttribute("marker", "FLOW")
-
-    console.add(flow)
-
-    val standard = builder.newLayout("PatternLayout")
-    standard.addAttribute("pattern", "%d %p [%c{1}] %m%n")
-
-    val policies = builder.newLayout("Policies")
-    val timeBasedTriggeringPolicy = builder.newLayout("TimeBasedTriggeringPolicy")
-    val sizeBasedTriggeringPolicy = builder.newLayout("SizeBasedTriggeringPolicy")
-    sizeBasedTriggeringPolicy.addAttribute("size", "10 MB")
-    policies.addComponent(timeBasedTriggeringPolicy)
-    policies.addComponent(sizeBasedTriggeringPolicy)
-    appLog.addComponent(policies)
-    console.add(standard)
-    appLog.add(standard)
-    builder.add(console)
-    builder.add(appLog)
-    val rootLogger: RootLoggerComponentBuilder = builder.newRootLogger(Level.INFO)
-    rootLogger.add(builder.newAppenderRef("stdout"))
-    builder.add(rootLogger)
-    val logger: LoggerComponentBuilder = builder.newLogger("co.id.datacomsolusindo.ipphonebridge", Level.DEBUG)
-    logger.add(builder.newAppenderRef("appLog"))
-    logger.addAttribute("additivity", false)
-    builder.add(logger)
-    Configurator.reconfigure(builder.build())
     LogManager.getLogger("co.id.datacomsolusindo.ipphonebridge.IpPhoneBridgeApplication").info("Bridge Start")
 }
 
@@ -98,9 +71,9 @@ object ClientHolder {
     private suspend fun massiveRun(action: suspend () -> Unit) {
         measureTimeMillis {
             coroutineScope { // sc
-                    launch {
-                            action()
-                    }
+                launch {
+                    action()
+                }
             }
         }
     }
@@ -148,13 +121,71 @@ object ClientHolder {
 
 @Component
 class WebSocketEventListener {
+    fun logBuilder(clNum: String) {
+        val builder = ConfigurationBuilderFactory.newConfigurationBuilder()
+        val console = builder.newAppender("stdout", "Console")
+
+        val appLog = builder.newAppender("appLog", "RollingFile")
+        appLog.addAttribute("fileName", "log/app/app.log")
+        appLog.addAttribute("filePattern", "log/app/\$\${date:yyyy - MM}/app-%d{yyyy-MM-dd}-%i.log.zip")
+
+        val flow: FilterComponentBuilder = builder.newFilter(
+                "MarkerFilter",
+                Filter.Result.ACCEPT,
+                Filter.Result.DENY)
+        flow.addAttribute("marker", "FLOW")
+        console.add(flow)
+        val standard = builder.newLayout("PatternLayout")
+        standard.addAttribute("pattern", "%d %p [%c{1}] %m%n")
+        val policies = builder.newLayout("Policies")
+        val timeBasedTriggeringPolicy = builder.newLayout("TimeBasedTriggeringPolicy")
+        val sizeBasedTriggeringPolicy = builder.newLayout("SizeBasedTriggeringPolicy")
+
+        sizeBasedTriggeringPolicy.addAttribute("size", "10 MB")
+        policies.addComponent(timeBasedTriggeringPolicy)
+        policies.addComponent(sizeBasedTriggeringPolicy)
+        console.add(standard)
+        builder.add(console)
+
+        appLog.add(standard)
+        appLog.addComponent(policies)
+        builder.add(appLog)
+
+        val rootLogger: RootLoggerComponentBuilder = builder.newRootLogger(Level.INFO)
+        rootLogger.add(builder.newAppenderRef("stdout"))
+        builder.add(rootLogger)
+
+        val logger: LoggerComponentBuilder = builder.newLogger("co.id.datacomsolusindo.ipphonebridge", Level.DEBUG)
+        logger.add(builder.newAppenderRef("appLog"))
+        logger.addAttribute("additivity", false)
+        builder.add(logger)
+        rootLogger.add(builder.newAppenderRef("appLog"))
+
+        ClientHolder.get().entries.forEach {
+            val clientLog = builder.newAppender("client-${it.key}", "RollingFile")
+            clientLog.addAttribute("fileName", "log/${it.key}/client-${it.key}.log")
+            clientLog.addAttribute("filePattern", "log/${it.key}/\$\${date:yyyy - MM}/app-%d{yyyy-MM-dd}-%i.client-${it.key}.zip")
+            clientLog.add(standard)
+            clientLog.addComponent(policies)
+            builder.add(clientLog)
+
+            val loggerClient: LoggerComponentBuilder = builder.newLogger("client.${it.key}", Level.DEBUG)
+            loggerClient.add(builder.newAppenderRef("client-${it.key}"))
+            loggerClient.addAttribute("additivity", false)
+            builder.add(loggerClient)
+            rootLogger.add(builder.newAppenderRef("client-${it.key}"))
+        }
+
+        Configurator.reconfigure(builder.build())
+    }
+
     @EventListener(SessionSubscribeEvent::class)
     fun handleSessionSubscribeEvent(event: SessionSubscribeEvent) {
         val message = event.message as GenericMessage<*>
         val simDestination = message.headers["simpDestination"] as String?
-        if (!simDestination!!.startsWith("/topic/healthCheck")) {
+        if (!(simDestination!!.startsWith("/topic/healthCheck") || simDestination.startsWith("/topic/notification"))) {
             // do stuff
-            val clNum = simDestination.split("/")[2]
+            val clNum = simDestination.split("/")[3]
             ClientHolder.put(clNum, Client(
                     clNum,
                     LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS")),
@@ -162,62 +193,7 @@ class WebSocketEventListener {
             ))
 
             LogManager.getLogger(this.javaClass).info("clientConnected $simDestination")
-
-            val builder = ConfigurationBuilderFactory.newConfigurationBuilder()
-            val console = builder.newAppender("stdout", "Console")
-
-            val appLog = builder.newAppender("appLog", "RollingFile")
-            appLog.addAttribute("fileName", "log/app/app.log")
-            appLog.addAttribute("filePattern", "log/app/\$\${date:yyyy - MM}/app-%d{yyyy-MM-dd}-%i.log.zip")
-
-            val flow: FilterComponentBuilder = builder.newFilter(
-                    "MarkerFilter",
-                    Filter.Result.ACCEPT,
-                    Filter.Result.DENY)
-            flow.addAttribute("marker", "FLOW")
-            console.add(flow)
-            val standard = builder.newLayout("PatternLayout")
-            standard.addAttribute("pattern", "%d %p [%c{1}] %m%n")
-            val policies = builder.newLayout("Policies")
-            val timeBasedTriggeringPolicy = builder.newLayout("TimeBasedTriggeringPolicy")
-            val sizeBasedTriggeringPolicy = builder.newLayout("SizeBasedTriggeringPolicy")
-
-            sizeBasedTriggeringPolicy.addAttribute("size", "10 MB")
-            policies.addComponent(timeBasedTriggeringPolicy)
-            policies.addComponent(sizeBasedTriggeringPolicy)
-            console.add(standard)
-            builder.add(console)
-
-            appLog.add(standard)
-            appLog.addComponent(policies)
-            builder.add(appLog)
-
-            val rootLogger: RootLoggerComponentBuilder = builder.newRootLogger(Level.INFO)
-            rootLogger.add(builder.newAppenderRef("stdout"))
-
-
-//            val logger: LoggerComponentBuilder = builder.newLogger("co.id.datacomsolusindo.ipphonebridge", Level.DEBUG)
-//            logger.add(builder.newAppenderRef("appLog"))
-//            logger.addAttribute("additivity", false)
-//            builder.add(logger)
-
-            ClientHolder.get().entries.forEach {
-                val clientLog = builder.newAppender("client-${it.key}", "RollingFile")
-                clientLog.addAttribute("fileName", "log/${it.key}/client-${it.key}.log")
-                clientLog.addAttribute("filePattern", "log/${it.key}/\$\${date:yyyy - MM}/app-%d{yyyy-MM-dd}-%i.client-${it.key}.zip")
-                clientLog.add(standard)
-                clientLog.addComponent(policies)
-                builder.add(clientLog)
-
-                val loggerClient: LoggerComponentBuilder = builder.newLogger("client.${it.key}", Level.DEBUG)
-                loggerClient.add(builder.newAppenderRef("client-${it.key}"))
-                loggerClient.addAttribute("additivity", false)
-                builder.add(loggerClient)
-                rootLogger.add(builder.newAppenderRef("client-${it.key}"))
-            }
-            builder.add(rootLogger)
-
-            Configurator.reconfigure(builder.build())
+            logBuilder(clNum)
             LogManager.getLogger("client.$clNum").info("Client $clNum Connected")
         }
     }

+ 1 - 0
src/main/resources/log4j2.xml

@@ -10,6 +10,7 @@
             <PatternLayout pattern="${LOG_PATTERN}"/>
         </Console>
 
+
     </Appenders>
     <Loggers>
         <Root level="INFO">