그냥 내 학사 학위 논문을위한 작은 배우 응용 프로그램을 구축하고 지금은 일부 로깅을 추가하려고합니다.Akka 로깅 패턴을 변경할 수 없습니다
배우 시스템 내부에 로그인하려면 로깅을 사용하고 akka는 백그라운드에서 logback-classic을 제공합니다. 로깅은 잘 작동하지만 logback.xml에서 액터 시스템의 패턴을 변경하면 변경되지 않습니다.
누구나 slf4j를 통해 로깅하고 전역 패턴을 변경하는 방법을 알고 싶습니다. 배우 시스템 내부 로그인? 액터 시스템 외부
로그 출력 : SLF4J위한
[INFO] [07/11/2014 13:03:09.199] [EBTreeSimulation-akka.actor.default-dispatcher-4] [akka://EBTreeSimulation/user/nodeA] nodeA[InsertNewObject] received new object:188586187441591506, 188586187441591506, 10
[INFO] [07/11/2014 13:03:09.199] [EBTreeSimulation-akka.actor.default-dispatcher-3] [akka://EBTreeSimulation/user/nodeB] nodeB[InsertNewObject] received new object:188586187441591506, 188586187441591506, 10
로거 초기화 :
오기 조직 액터 시스템 내부에서
2014-07-11 13:03:09 INFO model.AccessLayer : New Object 10 with id:188586187441591506 `
2014-07-11 13:03:09 INFO model.AccessLayer : New Object 11 with id:188586187442115794`
로그 출력 .slf4j.LoggerFactor actorSystem 대한 Y
class AccessLayer[T](communicationLayer:ActorRef, actors:List[ActorRef]) {
val log = LoggerFactory.getLogger(classOf[AccessLayer[T]])
....
}
로거 초기화 :
import akka.event.Logging
import com.typesafe.config.ConfigFactory
object SimulationMaster extends App{
val system = ActorSystem("EBTreeSimulation", ConfigFactory.load.getConfig("akka"))
val log = Logging.getLogger(system,this)
....
}
import akka.event.Logging
class TreeActor[T](communication:ActorRef) extends Actor {
val log = Logging(context.system,this)
....
}
logback.xml :
<configuration>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>./logs/myLog.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>logs/myLog.%i.log.zip</fileNamePattern>
<minIndex>1</minIndex>
<maxIndex>3</maxIndex>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>5MB</maxFileSize>
</triggeringPolicy>
<encoder>
<pattern>%date{YYYY-MM-dd HH:mm:ss} %level %X{sourceThread} %logger{10} [%file:%line]: %msg%n</pattern>
</encoder>
</appender>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!--<target>System.out</target>-->
<encoder>
<pattern>%date{YYYY-MM-dd HH:mm:ss} %-5level %logger : %msg%n</pattern>
</encoder>
</appender>
<!--<logger name="akka" level="INFO" />-->
<root level="info">
<appender-ref ref="FILE"/>
<appender-ref ref="STDOUT" />
</root>
application.conf :
akka {
# Loggers to register at boot time (akka.event.Logging$DefaultLogger logs
# to STDOUT)
loggers = ["akka.event.slf4j.Slf4jLogger"]
#event-handlers = ["akka.event.slf4j.Slf4jEventHandler"]
loglevel = "INFO"
stdout-loglevel = "DEBUG"
actor {
provider = "akka.cluster.ClusterActorRefProvider"
default-dispatcher {
throughput = 10
}
}
remote {
netty.tcp.port = 4711
}
}
문제는이 줄'ConfigFactory.load.getConfig ("akka")'와 관련이 있다고 생각합니다. 시도하고 그것을 단지'ConfigFactory.load'로 변경하십시오.그렇게하면 자식 'akka'요소를보고 수정 된 로깅 설정을 가져옵니다. – cmbaxter
위대한 문제가 해결되었습니다! 고마워. – prototyp