xpush_config.xml
X-PUSH는 구동할 때, $XPUSH_HOME/conf/xpush_config.xml 을 참조합니다. 아래에선 설정 파일 내용의 서비스와 속성들에 대해 설명합니다.
XML 파일의 태그는 server, service, attribute, depends 등으로 이루어져 있으며 attribute 태그를 통해 설정의 제어가 이루어집니다.
태그 | 설명 |
---|---|
server | 여러 서비스를 갖는 root 태그 |
service | xpush에서 사용될 서비스가 정의된 태그 |
attribute | 서비스의 속성이 정의된 태그 |
depends | 서비스 의존성 태그 - depends 태그를 통해 서비스의 구동 순서를 제어할 수 있습니다. - 해당 서비스는 depends에 설정된 서비스가 구동 된 이후에 구동됩니다. |
임의로 고정된 값을 변경하거나, 속성을 제거할 경우 시스템에 영향을 끼칠 수 있습니다.
서비스
WebPublisher
WebPublisher 서비스는 WebClient의 연결 및 데이터의 처리를 수행합니다.
어트리뷰트 | 설명 |
---|---|
ServerBindAddress | WebPublisher 서비스가 바인딩 될 주소 default : 0.0.0.0 |
Port | WebPublisher 서비스가 바인딩 될 포트 default : 50000 |
ProtocolServiceName | WebPublisher에서 사용할 프로토콜 서비스의 이름 |
CertificateServiceName | SSL 인증서가 설정된 서비스의 이름 |
IsHttps | HTTPS 사용 유무. 사용하기 위해서는 true로 세팅을 합니다. HTTPS 를 사용하기 위해서는 CertificateService 세팅이 되어 있어야 합니다. |
<service name="WebPublisher" ...> <attribute name="ServerBindAddress">0.0.0.0</attribute> <attribute name="Port">50000</attribute> <attribute name="ProtocolServiceName"> #MiPlatformReliabilityNettyWithProjectIDProtocol </attribute> <attribute name="CertificateServiceName">#CertificateService</attribute> <attribute name="IsHttps">false</attribute> <depends>MiPlatformReliabilityNettyWithProjectIDProtocol</depends> <depends>CertificateService</depends> <depends>Publisher</depends> <depends>Log</depends> </service>
RuntimePublisher
RuntimePublisher 서비스는 RuntimeClient의 연결 및 데이터의 처리를 수행합니다.
어트리뷰트 | 설명 |
---|---|
ServerBindAddress | RuntimePublisher 서비스가 바인딩 될 주소 default : 0.0.0.0 |
Port | RuntimePublisher 서비스가 바인딩 될 포트 default : 50001 |
ProtocolServiceName | RuntimePublisher에서 사용할 프로토콜 서비스의 이름 |
CertificateServiceName | SSL 인증서가 설정된 서비스의 이름 |
IsSSL | SSL 연결 사용 유무. 사용하기 위해서는 true로 세팅을 합니다. SSL 연결 를 사용하기 위해서는 CertificateService 세팅이 되어 있어야 합니다. |
<service name="RuntimePublisher" ..> <attribute name="ServerBindAddress">0.0.0.0</attribute> <attribute name="Port">50001</attribute> <attribute name="ProtocolServiceName"> #MiPlatformReliabilityNettyWithProjectIDProtocol </attribute> <attribute name="CertificateServiceName">#CertificateService</attribute> <attribute name="IsSSL">false</attribute> <depends>MiPlatformReliabilityNettyWithProjectIDProtocol</depends> <depends>CertificateService</depends> <depends>Publisher</depends> <depends>Log</depends> </service>
CertificateService
CertificateService는 SSL 인증서 관련 처리를 수행하는 서비스입니다.
어트리뷰트 | 설명 |
---|---|
Path | SSL 인증서 위치 |
Password | SSL 서버키 |
IsEncrypted | 암호화 사용 유무 |
CertificatesPasswordEncryptorClassName | password 암호화/복호화 하기 위한 클래스 이름 |
<service name="CertificateService"> <attribute name="Path">C:/xpush-2.8.0/conf/cacao.tobesoft.co.kr.jks</attribute> <attribute name="Password">1234567890</attribute> <attribute name="IsEncrypted">false</attribute> <attribute name="CertificatesPasswordEncryptorClassName">com.nexacro.xpush.crypto.XPushPBEStringEncryptor</attribute> </service>
Publisher
Publisher는 접속한 클라이언트의 관리 및 JMX 설정 등을 수행합니다.
서번트(Servant) : 하나의 클라이언트를 관리하는 객체
컨테이너(Container) : 서번트들을 관리하는 객체
어트리뷰트 | 설명 |
---|---|
ProtocolServiceName | Publisher 서비스에서 사용하는 프로토콜 이름 |
PublishContainerFactoryServiceName | ContainerFactory 서비스 이름 |
ContainerNum | 컨테이너 개수 |
ServantGarbageInterval | 서번트의 Keep 메시지 유무 체크 기간 |
| 삭제됨 |
| 삭제됨 |
| 삭제됨 |
QueueServiceNames | 메인 큐 서비스 이름 |
| 사용되지 않음 |
| 사용되지 않음 |
| 사용되지 않음 |
InsertMsgQueueServiceName | 메시지 공급 큐 서비스 이름 |
NotificationQueueServiceName | 알림 큐 서비스 이름 |
DbcpServiceName | DB 연결 서비스 이름 |
ServerBindAddress | JMX 모니터링 바인딩 주소 |
isJMX | JMX 사용 유무 |
IsJMXpassword | JMX 패스워드 사용 유무 |
JMXrmiRegistryPort | JMX rmi 등록 포트 |
JMXrmiServerPort | JMX rmi 서버 포트 |
IsSystemMonitor | 시스템 데이터(CPU..등) 모니터링 유무 |
ConnectionManagerServiceName | 클라이언트 연결 관리 서비스 이름 |
<service name="Publisher" > <attribute name="ProtocolServiceName"> #MiPlatformReliabilityNettyWithProjectIDProtocol </attribute> <attribute name="PublishContainerFactoryServiceName"> #PublishContainerFactory </attribute> <attribute name="ContainerNum">10</attribute> <attribute name="ServantGarbageInterval">30000</attribute> <attribute name="ThreadPoolCoreSize">4</attribute> <attribute name="ThreadPoolMaxSize">8</attribute> <attribute name="ThreadPoolKeepAliveTime">86400000</attribute> <attribute name="QueueServiceNames"> #MonitorablePushMessageQueueService </attribute> <attribute name="WebPort">-1</attribute> <attribute name="SessionInterval">600</attribute> <attribute name="LogFixLineCount">100</attribute> <attribute name="InsertMsgQueueServiceName">#InsertMsgQueue</attribute> <attribute name="NotificationQueueServiceName"> #NotificationQueueService </attribute> <attribute name="DbcpServiceName">#DbcpService</attribute> <attribute name="ServerBindAddress">0.0.0.0</attribute> <attribute name="isJMX">false</attribute> <attribute name="IsJMXpassword">false</attribute> <attribute name="JMXrmiRegistryPort">50005</attribute> <attribute name="JMXrmiServerPort">50006</attribute> <attribute name="IsSystemMonitor">false</attribute> <depends>InsertMsgQueue</depends> <depends>NotificationQueueService</depends> <depends>MonitorablePushMessageQueueService</depends> <depends>MiPlatformReliabilityNettyWithProjectIDProtocol</depends> <depends>PublishContainerFactory</depends> <depends>DbcpService</depends> <depends>Log</depends> <attribute name="ConnectionManagerServiceName"> #connectionManagerService </attribute> <depends>connectionManagerService</depends> </service>
IsSystemMonitor 속성을 활성화 하려고 할 때, 운영체제에 따라 작동하지 않을 수 있습니다.
Servant Container 개수와 Container 별 Servant 개수
배포 시 설정된 기본값은 동시 접속 수 5,000개의 클라이언트에 대한 서비스를 전제로 설정된 값입니다. 이 값은 많은 성능 테스트를 통하여 구한 값입니다. 따라서 배포 시에 설정된 값을 사용할 것을 권장합니다.
5,000개 이상의 클라이언트 접속을 처리하기 위해서는 Servant Container의 개수와 Container 개수를 수정하여야 합니다.
Servant는 접속된 하나의 클라이언트를 관리하는 객체이고, Servant Container는 특정 개수의 Servant를 관리하는 객체입니다. 각각의 Servant Container는 개별 스레드로 동작하며, 클라이언트에 메시지를 전송하기 위해서 각 Servant Container가 메시지를 받으면 자신이 관리하는 모든 Servant에 대하여 차례대로 메시지를 전송합니다. 이렇게 개별적인 thread에 의해 동작하기 때문에 전체 Servant에 대한 전송이 끝나지 않아도 뒤이어 전달된 메시지를 처리할 수 있고, 결과적으로 처리 시간이 단축됩니다.
배포 시의 기본값은 10개의 Container와 500개의 Servant입니다. 한 개의 Servant Container가 500개의 Servant를 관리하기 때문에 총 5,000개(=Container 개수 * Servant 개수 = 10 * 500)의 클라이언트를 처리할 수 있습니다. 만약 5,000개의 사용자가 접속해 있을 때 새로운 연결이 요청되면 연결을 받아들이지 않고 거부합니다.
MonitorablePushMessageQueueService
MonitorablePushMessageQueueService는 실시간 및 신뢰성 메시지 전송을 대기하는 큐입니다.
어트리뷰트 | 설명 |
---|---|
MaxCapacity | 큐의 최대 용량 -1 이면 용량 제한이 없습니다. |
<service name="MonitorablePushMessageQueueService"> <attribute name="MaxCapacity">-1</attribute> </service>
MiPlatformReliabilityNettyWithProjectIDProtocol
MiPlatformReliabilityNettyWithProjectIDProtocol은 서버와 클라이언트간의 프로토콜이 정의된 서비스입니다.
어트리뷰트 | 설명 |
---|---|
AuthenticatorServiceName | 프로토콜에서 사용하는 인증 서비스 이름 |
usedACKN | ACKN 사용여부 - ACKN은 넥사크로 엔진으로부터 응답받앗을 때 DB에 update 할 지 유무 |
| 개발 중인 사항 |
KeepAlive | keepAlive 메시지 유지 가능 시간 |
TimeOut | WebPush 쓰기 timeout 시간(초) |
| 삭제됨 |
| 삭제됨 |
SelectMsgQueueServiceName | 클라이언트 미수신 메시지 요청 큐 이름 |
UpdateMsgQueueServiceName | 클라이언트 수신 응답 메시지 큐 이름 |
AutoInsertTopic | subscribe 시 DB에 자동 토픽 등록 유무 |
UserRegister | 자동 토픽 등록을 활성화할 때, user 등록 유무 |
insertTopicMsgQueueServiceName | 유저 등록, 미수신 메시지 개수 조회 큐 이름 |
DbcpServiceName | DB 연결 서비스 이름 |
RepositoryServiceName | DB 저장소 서비스 이름 |
<service name="CertificateService"> <attribute name="Path">C:/xpush-2.8.0/conf/cacao.tobesoft.co.kr.jks</attribute> <attribute name="Password">1234567890</attribute> <attribute name="IsEncrypted">false</attribute> <attribute name="CertificatesPasswordEncryptorClassName">com.nexacro.xpush.crypto.XPushPBEStringEncryptor</attribute> </service>
MiPlatformProtocolReliabilityAuthenticator
MiPlatformProtocolReliabilityAuthenticator은 클라이언트 관련 인증 서비스 처리를 수행합니다.
어트리뷰트 | 설명 |
---|---|
AuthenticatorClassName | 클라이언트 인증 클래스 경로 |
<service name="MonitorablePushMessageQueueService"> <attribute name="MaxCapacity">-1</attribute> </service>
PublisherContainerFactory
PublisherContainerFactory는 컨테이너 생성 서비스 입니다.
어트리뷰트 | 설명 |
---|---|
RegisterContainer | 컨테이너 등록 유무 |
MaxServantNum | 컨테이너 당 서번트 최대 개수 |
ThreadPoolCoreSize | 쓰레드 풀 최소 사이즈 |
ThreadPoolMaxSize | 쓰레드 풀 최대 사이즈 |
ThreadPoolKeepAliveTime | 쓰레드 풀 유지 시간 - 쓰레드 풀에 idle 쓰레드가 최소 크기보다 많은 경우 쓰레드 풀에 남아 있는 시간 |
QueueServiceName | 컨테이너 큐 서비스 이름 |
<service name="PublishContainer"> <attribute name="RegisterContainer">true</attribute> <attribute name="MaxServantNum">500</attribute> <attribute name="ThreadPoolCoreSize">8</attribute> <attribute name="ThreadPoolMaxSize">16</attribute> <attribute name="ThreadPoolKeepAliveTime">86400000</attribute> <attribute name="QueueServiceName">#ContainerQueue</attribute> <depends> <service name="ContainerQueue" ...> <attribute name="MaxCapacity">20000</attribute> </service> </depends> <depends>Log</depends> <depends>MonitorablePushMessageQueueService</depends> </service>
ContainerQueue
컨테이너에서 메시지를 전달하기 위해 대기하는 큐
어트리뷰트 | 설명 |
---|---|
MaxCapacity | 큐 최대 용량(개수) |
<service name="ContainerQueue"> <attribute name="MaxCapacity">20000</attribute> </service>
Provider
메시지 공급 서비스
어트리뷰트 | 설명 |
---|---|
ServerBindAddress | Provider 서비스가 바인딩 될 주소 default: 0.0.0.0 |
Port | Provider 서비스가 바인딩 될 포트 default: 50002 |
SocketProviderProtocolName | Provider 서비스가 사용할 프로토콜 서비스 이름 |
CertificateServiceName | Provider 서비스가 사용할 인증서 서비스 이름 |
<service name="Provider"> <attribute name="ServerBindAddress">0.0.0.0</attribute> <attribute name="Port">50002</attribute> <attribute name="SocketProviderProtocolName"> #SocketProviderJsonProtocol </attribute> <attribute name="CertificateServiceName">#CertificateService</attribute> <depends>SocketProviderJsonProtocol</depends> <depends>CertificateService</depends> <depends>SocketPushMessageProvider</depends> <depends>Log</depends> </service>
SocketPushMessageProvider
Provider 서브 서비스
어트리뷰트 | 설명 |
---|---|
SocketProviderProtocolName | Provider 서비스가 사용할 프로토콜 서비스 이름 |
QueueServiceNames | 실시간 및 신뢰성 메시지 전송 관련 메인 큐 서비스 이름 |
<service name="SocketPushMessageProvider"> <attribute name="SocketProviderProtocolName"> #SocketProviderJsonProtocol </attribute> <attribute name="QueueServiceNames"> #MonitorablePushMessageQueueService </attribute> <depends>MonitorablePushMessageQueueService</depends> <depends>SocketProviderJsonProtocol</depends> <depends>Log</depends> </service>
SocketProviderJsonProtocol
Provider 프로토콜 서비스
어트리뷰트 | 설명 |
---|---|
ProviderVersion | provider 프로토콜 버전 - 고정값 |
AuthenticatorServiceName | 프로바이더 인증 서비스 이름 |
| Provider connect 유지 시간(사용하지 않음) |
TimeOut | Write 데이터 timeout |
MessageSize | 신뢰성 메시지 크기 제한 |
NodeManagerServiceName | 클러스터링 서비스 이름 |
NotificationQueueServiceName | 모바일 알림 큐 서비스 이름 |
<service name="SocketProviderJsonProtocol"> <attribute name="ProviderVersion">2</attribute> <attribute name="AuthenticatorServiceName"> #SocketProviderProtocolAuthenticator </attribute> <attribute name="KeepAlive">60000</attribute> <attribute name="TimeOut">30000</attribute> <attribute name="MessageSize">4000</attribute> <attribute name="InsertMsgQueueServiceName">#InsertMsgQueue</attribute> <attribute name="NodeManagerServiceName">#nodeManagerService</attribute> <attribute name="NotificationQueueServiceName"> #NotificationQueueService </attribute> <depends>NotificationQueueService</depends> <depends>InsertMsgQueue</depends> <depends>nodeManagerService</depends> <depends>Log</depends> </service>
SocketProviderProtocolAuthenticator
Provider 인증 서비스 이름
어트리뷰트 | 설명 |
---|---|
AuthenticatorClassName | 인증에 사용될 클래스 이름 |
<service name="SocketProviderProtocolAuthenticator"> <attribute name="AuthenticatorClassName"> com.nexacro.xpush.fw.service.auth.UserProfileDummyAuthenticator </attribute> </service>
PushMonitor
PushMonitor는 모니터링 관련 처리를 수행할 수 있는 서비스 입니다.
어트리뷰트 | 설명 |
---|---|
MonitorProtocolServiceName | 모니터링 서비스에서 사용할 프로토콜 서비스 이름 |
MonitorableStreamProviderServiceName | 모니터링 서비스 출력 서비스 이름 |
ServerBindAddress | 모니터링 서비스에서 바인딩 할 주소 |
Port | 모니터링 서비스에서 바인딩 할 포트 deafult: 50003 |
QueueServiceNames | 실시간 및 신뢰성 메시지 전송 관련 메인 큐 서비스 이름 |
<service name="PushMonitor"> <attribute name="MonitorProtocolServiceName">#MonitorProtocol</attribute> <attribute name="MonitorableStreamProviderServiceName"> #ConsoleLogWriter </attribute> <attribute name="ServerBindAddress">0.0.0.0</attribute> <attribute name="Port">50003</attribute> <attribute name="QueueServiceNames"> #MonitorablePushMessageQueueService</attribute> <depends>MonitorProtocol</depends> <depends>MonitorablePushMessageQueueService</depends> <depends>Log</depends> </service>
MonitorProtocol
MonitorProtocol은 PushMonitor 서비스에서 사용할 프로토콜이 정의된 서비스입니다.
어트리뷰트 | 설명 |
---|---|
AuthenticatorServiceName | 모니터링 인증 서비스 이름 |
DbcpServiceName | DB 연결 서비스 이름 |
<service name="MonitorProtocol"> <attribute name="AuthenticatorServiceName"> #MonitorProtocolAuthenticator </attribute> <attribute name="DbcpServiceName">#DbcpService</attribute> <depends> <service name="MonitorProtocolAuthenticator"> <attribute name="AuthenticatorClassName"> com.nexacro.xpush.fw.service.auth.UserPropertiesEncryptAuthenticator </attribute> </service> </depends> <depends>DbcpService</depends> <depends>Log</depends> </service>
InsertMsgQueue
Provider로부터 공급된 메시지를 저장하기 위한 큐
어트리뷰트 | 설명 |
---|---|
MaxCapacity | 큐 최대 용량(개수) |
<service name="InsertMsgQueue"> <attribute name="MaxCapacity">20000</attribute> </service>
SelectMsgQueue
클라이언트 미수신 메시지 요청 큐
어트리뷰트 | 설명 |
---|---|
MaxCapacity | 큐 최대 용량(개수) |
<service name="SelectMsgQueue"> <attribute name="MaxCapacity">-1</attribute> </service>
UpdateMsgQueue
클라이언트 수신 응답 메시지 큐
어트리뷰트 | 설명 |
---|---|
MaxCapacity | 큐 최대 용량(개수) |
<service name="InsertMsgQueue"> <attribute name="MaxCapacity">-1</attribute> </service>
InsertTopicMsgQueue
클라이언트 유저 등록, 미수신 메시지 개수 조회 큐
어트리뷰트 | 설명 |
---|---|
MaxCapacity | 큐 최대 용량(개수) |
<service name="InsertTopicMsgQueue"> <attribute name="MaxCapacity">-1</attribute> </service>
EtcQueue
알림(Notification) 실패 후속 처리 큐
어트리뷰트 | 설명 |
---|---|
MaxCapacity | 큐 최대 용량(개수) |
<service name="EtcQueue"> <attribute name="MaxCapacity">-1</attribute> </service>
EtcService
알림(Notification) 실패 후속 처리 서비스
어트리뷰트 | 설명 |
---|---|
EtcHandlerThreadPoolCount | 알림 실패 후속 처리 핸들러 쓰레드 풀 수 |
EtcHandlerProcessingAtOnceCount | 알림 실패 후속 큐로부터 한 번에 가져 올 데이터 수 |
ConnectionManagerServiceName | 클라이언트 연결 관리 서비스 이름 |
EtcQueueServiceName | 알림 실패 후속 처리 큐 이름 |
DbcpServiceName | DB 연결 서비스 이름 |
EtcProcessorName | 알림 실패 후속처리 클래스 이름 |
<service name="EtcService"> <attribute name="EtcHandlerThreadPoolCount">1</attribute> <attribute name="EtcHandlerProcessingAtOnceCount">1</attribute> <attribute name="ConnectionManagerServiceName"> #connectionManagerService </attribute> <attribute name="EtcQueueServiceName">#EtcQueue</attribute> <attribute name="DbcpServiceName">#DbcpService</attribute> <attribute name="EtcProcessorName"> com.nexacro.xpush.service.EtcService.EtcProcessorImpl </attribute> </service>
RepositoryService
신뢰성 메시지를 받아 데이터베이스에 저장하는 서비스
어트리뷰트 | 설명 |
---|---|
ProviderHandlerThreadPoolCount | 신뢰성 메세지 쓰레드 풀의 쓰레드 개수 Message Provider로부터 전달 받은 메세지에 대한 처리를 수행하는 핸들러를 쓰레드풀에서 작업하기 위한 쓰레드의 수를 설정합니다. |
RequestHandlerThreadPoolCount | 미수신 메세지 쓰레드 풀의 쓰레드 개수 Nexcaro Client로부터 요청 받은 미수신 메세지에 대한 처리를 수행하는 핸들러에 대해 쓰레드풀에서 작업하기 위한 쓰레드의 수를 설정합니다. |
ResponseHandlerThreadPoolCount | 수신 확인 메세지 쓰레드 풀의 쓰레드 개수 Nexcaro Client로부터 수신확인 된 메세지에 대한 처리를 수행하는 핸들러에 대해 쓰레드풀에서 작업하기 위한 쓰레드의 수를 설정합니다. |
ResponseHandlerBatchAtOnceCount | Client로부터 전달 받은 수신확인 및 완료 응답에 대해 DB에 한 번에 Batch를 실행하는 수입니다. |
ResponseHandlerProcessingAtOnceCount | Nexacro Client로부터 전달 받은 메세지가 쌓인 Repository Queue로부터 한번에 메세지를 가져오는 수입니다. |
ProviderHandlerProcessingAtOnceCount | Message Provider로부터 전달 받은 메세지가 쌓인 Repository Queue로부터 한번에 메세지를 가져오는 수입니다. |
TopicHandlerThreadPoolCount | 토픽 처리 쓰레드 풀의 쓰레드 개수 Nexacro Client로부터 TOPIC과 연관된 프로토콜에 대한 처리를 수행하는 핸들러에 대해 쓰레드풀에서 작업하기 위한 쓰레드의 수를 설정합니다. |
useOfTrigger | 트리거 사용 여부 (오라클에서만 사용) |
IsRequestOnlyStateZero | 미수신 메세지 요청 범위 클라이언트에서 미수신 메세지를 요청할 때 T_USER_MESSAGE 테이블의 MESSAGE_STATE 컬럼을 참조합니다. 기본적으로 메세지 상태가 0이면 메시지를 받지 못한 상태, 1이면 메세지를 받은 상태, 2이면 클라이언트가 메세지를 수신 확인한 상태입니다. true : MESSAGE_SATE 컬럼이 0 false : MESSAGE_STATE 컬럼이 0, 1 |
limitFailCount | 연속적인 실패 제한 수 연속적으로 실패횟수가 초과했을 경우 DB 문제로 파악, DB 처리가 실패 시 InsertMessageQueue를 막아 더 이상의 메시지를 수신하지 않도록 합니다. |
retryDBPeriodMillis | DB복구 실행 간격(Milliseconds) InsertMessageQueue가 막혀 있는 경우 DB에 접근하여 정상여부 판단을 하는 시간 간격 |
availablePeriod | 신뢰성메시지의 기본 유효기간 설정 (day) |
maximumAvailablePeriod | 신뢰성메시지의 최대 유효기간 설정 (day) |
<service name=" RepositoryService "> <attribute name="ProviderHandlerThreadPoolCount">10</attribute> <attribute name="RequestHandlerThreadPoolCount">10</attribute> <attribute name="ResponseHandlerThreadPoolCount">10</attribute> <attribute name="ResponseHandlerProcessingAtOnceCount">1000</attribute> <attribute name="ProviderHandlerProcessingAtOnceCount">10</attribute> <attribute name="TopicHandlerThreadPoolCount">10</attribute> <attribute name="useOfTrigger">true</attribute> <attribute name="IsRequestOnlyStateZero">true</attribute> <attribute name="limitFailCount">100</attribute> <attribute name="retryDBPeriodMillis">60000</attribute> <attribute name="availablePeriod">-1</attribute> <attribute name="maximumAvailablePeriod">-1</attribute> <attribute name="PublisherServiceName">#Publisher</attribute> <attribute name="DbcpServiceName">#DbcpService</attribute> <attribute name="InsertMsgQueueServiceName">#InsertMsgQueue</attribute> <attribute name="SelectMsgQueueServiceName">#SelectMsgQueue</attribute> <attribute name="UpdateMsgQueueServiceName">#UpdateMsgQueue</attribute> <attribute name="InsertTopicMsgQueueServiceName"> #InsertTopicMsgQueue </attribute> <attribute name="NodeManagerServiceName"> #nodeManagerService </attribute> <attribute name="NotificationQueueServiceName"> #NotificationQueueService </attribute> <depends>NotificationQueueService</depends> <depends>Publisher</depends> <depends>UpdateMsgQueue</depends> <depends>SelectMsgQueue</depends> <depends>InsertMsgQueue</depends> <depends>InsertTopicMsgQueue</depends> <depends>DbcpService</depends> <depends>Log</depends> </service>
DbcpService
데이터베이스의 connection Pool을 관리 하는 서비스
어트리뷰트 | 설명 |
---|---|
username | Database 접속 할 사용자 ID |
password | Database 접속할 사용자 비밀번호 |
connectUri | 접속할 Database의 URI |
jdbcClassName | 접속할 JDBC의 Class Name |
maxActive | 서비스에 동시에 사용될 수 있는 최대 커넥션 개수 |
maxIdle | 커넥션 풀에 유지될 수 있는 Idle 상태 커넥션의 최대 개수 |
minIdle | 커넥션 풀에 유지될 수 있는 Idle 상태 커넥션의 최소 개수 |
maxWait | 커넥션 풀에서 사용 중인 커넥션의 개수가 maxActive 개수인 경우 maxWait만큼 기다리게 된다. 만약 maxWait 후에도 사용할 수 있는 여분의 커넥션이 없을 경우 에러를 발생시키게 된다. |
validationQuery | 커넥션 풀 연결이 유효한지 확인하기 위한 SQL 쿼리문입니다. 쿼리문은 SQL SELECT 구문으로 작성해야 하며, 하나 이상의 ROW를 반환해야 합니다. |
testOnBorrow | Pool 에서 커넥션을 얻어올 때 테스트 실행 |
testOnReturn | Pool 로 커넥션을 반환할 때 테스트 실행 |
testWhileIdle | Pool 안에 있는 유휴 상태의 커넥션 대상으로 테스트 실행 여부 |
timeBetweenEvictionRunsMillis | Evictor 스레드가 동작하는 간격 -1 이면 Evictor 스레드의 실행이 비활성 |
numTestsPerEvictionRun | pool 에 있는 커넥션을 검사할 갯수 |
minEvictableIdleTimeMillis | 커넥션의 유휴 시간을 확인해 커넥션을 제거할 시간 |
UserInfoEncryptorClassName | DB 접속 계정 정보를 암/복호화하는 클래스명. |
isEncrypted | DB 접속 계정이 암호화되었을 경우, true 그렇지않을 경우, false. |
자세한 내용은 Apache Commons DBCP 사이트를 참고해주세요.
http://commons.apache.org/proper/commons-dbcp/configuration.html
<service name="DbcpService"> <attribute name="username">sa</attribute> <attribute name="password"></attribute> <attribute name="connectUri">jdbc:h2:tcp://localhost/~/test</attribute> <attribute name="jdbcClassName">org.h2.Driver</attribute> <attribute name="maxActive">10</attribute> <attribute name="maxIdle">0</attribute> <attribute name="minIdle">5</attribute> <attribute name="maxWait">-1</attribute> <attribute name="validationQuery">select 1 from dual</attribute> <attribute name="testOnBorrow">true</attribute> <attribute name="testOnReturn">false</attribute> <attribute name="testWhileIdle">false</attribute> <attribute name="timeBetweenEvictionRunsMillis">-1</attribute> <attribute name="numTestsPerEvictionRun">3</attribute> <attribute name="minEvictableIdleTimeMillis">1800000</attribute> <attribute name="UserInfoEncryptorClassName">com.nexacro.xpush.crypto.XPushPBEStringEncryptor</attribute> <attribute name="isEncrypted">false</attribute> <depends>Log</depends> </service>
CronTabScheduleService
스케줄링을 설정하는 서비스
어트리뷰트 | 설명 |
---|---|
type="java.lang.String" | * * * * * 는 분, 시, 일, 월, 요일을 나타냅니다. 분(0-59) 시(0-23) 일(1-31) 월(1-12) 요일(0-6) |
<service name=" CronTabScheduleService "> ... <argument type="java.lang.String"> 0 0 1 * * </argument> <!-- 매월 1일 0시 0분 메시지 삭제 --> ... </service>
수신 완료된 메시지 삭제
<invoke name="add"> <!-- 매월 1일 0시 0분 메시지 삭제 --> <argument type="java.lang.String">0 0 1 * *</argument> <argument type="it.sauronsoftware.cron4j.Task"> <object code="com.nexacro.xpush.service.schedule.DeleteMessageTask"> <attribute name="dbcpService"> <service-ref>#DbcpService</service-ref> </attribute> </object> </argument> </invoke>
유효기간 메시지 삭제
<invoke name="add"> <!-- 매월 매일 0시 0분 만료 메시지 삭제 --> <argument type="java.lang.String">0 0 * * *</argument> <argument type="it.sauronsoftware.cron4j.Task"> <object code="com.nexacro.xpush.service.schedule.DeleteExpiredMessageTask"> <attribute name="dbcpService"> <service-ref>#DbcpService</service-ref> </attribute> </object> </argument> </invoke>
유효기간 알림 삭제
<invoke name="add"> <!-- 일요일 0시 0분 만료 알림 삭제 --> <argument type="java.lang.String">0 0 * * *</argument> <argument type="it.sauronsoftware.cron4j.Task"> <object code="com.nexacro.xpush.service.schedule.DeleteExpiredNotificationTask"> <attribute name="dbcpService"> <service-ref>#DbcpService</service-ref> </attribute> </object> </argument> </invoke>
HazelcastService
scale-out 서비스
어트리뷰트 | 설명 |
---|---|
portAutoIncrement | 각각의 HazelcastService에 할당되는 포트 번호의 자동 증가 기능의 활성화 여부입니다. default : false |
port | HazelcastService에서 사용할 기본 포트 번호입니다. default : 50007 |
publicAddress | 해당 서버의 IP 주의 : 고정 IP 만 가능 |
joinTcpipEnable | TCP/IP로 다른 X-PUSH Node와의 연결 여부 설정 default : false |
joinTcpipMember | 연결될 X-PUSH Node들이 정보 ex) 127.0.0.1:50007 |
<service name="HazelcastService"> <attribute name="portAutoIncrement">false</attribute> <attribute name="port">50007</attribute> <attribute name="publicAddress">172.10.12.120</attribute> <attribute name="joinTcpipEnable">false</attribute> <attribute name="joinTcpipMember" type ="java.lang.String[]"> 127.0.0.1:50007 </attribute> <depends>Log</depends> </service>
ConnectionManagerService
클라이언트 연결 관리 서비스
어트리뷰트 | 설명 |
---|---|
lockTimeSec | 한 X-PUSH Node가 다운되었을 경우, Node 간에 공유하는 정보를 정리하기 위한 lock 시간.(단위:초) |
HazelcastServiceName | scale-out 서비스 이름 |
<service name="connectionManagerService" ... > <attribute name="lockTimeSec">120</attribute> <attribute name="HazelcastServiceName">#HazelcastService</attribute> </service>
NodeManagerService
X-PUSH 노드 관리 서비스
어트리뷰트 | 설명 |
---|---|
HazelcastServiceName | scale-out 서비스 이름 |
<service name="nodeManagerService"> <attribute name="HazelcastServiceName">#HazelcastService</attribute> <depends>HazelcastService</depends> </service>
NotificationAttributeCommonService
모바일 알림 속성 설정 서비스
어트리뷰트 | 설명 |
---|---|
MultiAppWithProjectID | 프로젝트로 구성된 여러 모바일 앱 사용 여부 |
badge | badge 표시 여부 |
isBadgeOnlyStateZero | 미수신 메시지의 상태값이 0인 값만 badge에 표시 여부 |
| 사용되지 않음 |
<service name="NotificationAttributeCommonService"> <attribute name="IsMultiAppWithProjectID">true</attribute> <attribute name="badge">true</attribute> <attribute name="IsBadgeOnlyStateZero">true</attribute> <attribute name="retries">3</attribute> </service>
NotificationBuilderService
모바일 알림 생성 서비스
어트리뷰트 | 설명 |
---|---|
InsertBatchAtOnceCount | T_Notification 테이블에 한번에 insert 할 개수 |
UpdateHandlerBatchAtOnceCount | 모바일 알림 result를 T_Notification 테이블에 한번에 update할 개수 |
UpdateHandlerProcessingAtOnceCount | Update 큐로부터 한번에 가져올 개수 |
NotificationQueueServiceName | Notification 큐 서비스 이름 |
ConnectionManagerServiceName | 클라이언트 연결 관리 서비스 이름 |
DbcpServiceName | DB 연결 서비스 이름 |
RepositoryServiceName | 저장소 서비스 이름 |
ApnsNotifiableQueueServiceName | APNs 알림 큐 서비스 이름 |
GcmNotifiableQueueServiceName | FCM 알림 큐 서비스 이름 |
UpdateNotificationQueueServiceName | 모바일 알림 결과 업데이트 큐 서비스 이름 |
NotificationFormatterName | 모바일 알림 메시지 변환 이름 |
NotificationAttributeCommonServiceName | 모바일 알림 속성 설정 서비스 이름 |
<service name="NotificationBuilderService"> <attribute name="insertBatchAtOnceCount">1000</attribute> <attribute name="UpdateHandlerBatchAtOnceCount">1000</attribute> <attribute name="UpdateHandlerProcessingAtOnceCount">1000</attribute> <attribute name="NotificationQueueServiceName"> #NotificationQueueService </attribute> <attribute name="ConnectionManagerServiceName"> #connectionManagerService </attribute> <attribute name="DbcpServiceName">#DbcpService</attribute> <attribute name="RepositoryServiceName">#RepositoryService</attribute> <attribute name="ApnsNotifiableQueueServiceName"> #ApnsNotifiableQueueService </attribute> <attribute name="GcmNotifiableQueueServiceName"> #GcmNotifiableQueueService </attribute> <attribute name="UpdateNotificationQueueServiceName"> #UpdateNotificationQueueService </attribute> <attribute name="NotificationFormatterName"> com.nexacro.xpush.service.notification.NotificationFormatterPropertiesImpl </attribute> <depends>NotificationQueueService</depends> <depends>connectionManagerService</depends> <depends>DbcpService</depends> <depends>RepositoryService</depends> <depends>ApnsNotifiableQueueService</depends> <depends>GcmNotifiableQueueService</depends> <depends>UpdateNotificationQueueService</depends> <attribute name="NotificationAttributeCommonServiceName"> #NotificationAttributeCommonService</attribute> <depends>NotificationAttributeCommonService</depends> </service>
ApnsInfoService
APNs 인증서 정보 서비스
어트리뷰트 | 설명 |
---|---|
ProjectID | 프로젝트 이름 |
AppInfo | Apns 인증서 정보 BundleID = path, password, keyStoreType, production |
<service name="IOS_PRO#2"> <attribute name="ProjectID">PRO#2</attribute> <attribute name="AppInfo" type ="java.util.HashMap"> com.nexacro.apns=C:\tmp\apns.p12,password,PKCS12,false, </attribute> </service>
ApnsNotiferService
APNs 알림 서비스
어트리뷰트 | 설명 |
---|---|
ApnsInfo | 인증서 서비스 이름 |
NotificationAttributeCommonServiceName | 모바일 알림 속성 서비스 이름 |
ApnsConnectorName | ApnsConnector 클래스 |
feedbackService | Apns 피드백서비스 활성화 유무 |
sound | 알림 사운드 |
ApnsMessageQueueServiceName | Apns 큐 서비스 이름 |
DbcpServiceName | DB 연결 서비스 이름 |
ApnsProviderThreadPoolCount | Apns Provider 쓰레드풀의 쓰레드 개수 : Apns Server 에 Notification 을 전송하기 위한 Connection 및 Send 의 처리 능력을 고려하여 쓰레드풀의 쓰레드 개수를 설정합니다. |
failOver | 모바일 알림 실패 시 후속 처리 유무 |
nextQueueServiceName | 모바일 알림 실패 시 후속 처리되는 큐 서비스 이름 |
UpdateNotificationQueueServiceName | 모바일 알림 결과 업데이트 큐 서비스 이름 |
<service name="ApnsNotifierService"> <attribute name="ApnsInfo"> #IOS_PRO#2 </attribute> <attribute name="NotificationAttributeCommonServiceName"> #NotificationAttributeCommonService </attribute> <attribute name="ApnsConnectorName"> com.nexacro.xpush.service.notification.connector.XPushApnsConnector </attribute> <attribute name="feedbackService">true</attribute> <attribute name="sound">default</attribute> <attribute name="ApnsMessageQueueServiceName"> #ApnsNotifiableQueueService </attribute> <attribute name="DbcpServiceName">#DbcpService</attribute> <attribute name="ApnsProviderThreadPoolCount">1</attribute> <attribute name="failOver">true</attribute> <attribute name="nextQueueServiceName">#EtcQueue</attribute> <attribute name="UpdateNotificationQueueServiceName"> #UpdateNotificationQueueService </attribute> <depends>UpdateNotificationQueueService</depends> <depends>ApnsNotifiableQueueService</depends> <depends>DbcpService</depends> <depends>NotificationAttributeCommonService</depends> </service>
FcmInfoService
APNs 인증서 정보 서비스
어트리뷰트 | 설명 |
---|---|
ProjectID | 프로젝트 이름 |
ApiKey | FCM 프로젝트 ApiKey |
SenderID | FCM 발신자 아이디 |
<service name="ANDROID_PRO#1"> <attribute name="ProjectID">PRO#1</attribute> <attribute name="Apikey">AIzaSyAbsdAxWAIZAXnTR12mbAhe6GUH3yyIx7A</attribute> <attribute name="SendID">678520125789</attribute> </service>
GcmNotifierService
FCM 알림 서비스
어트리뷰트 | 설명 |
---|---|
FcmInfo | FCM 프로젝트 서비스 이름 |
NotificationAttributeCommonServiceName | 모바일 알림 속성 서비스 이름 |
GcmConnectorName | FcmConnector 클래스 |
GcmMessageQueueServiceName | FCM 큐 서비스 이름 |
DbcpServiceName | DB 연결 서비스 이름 |
GcmProviderThreadPoolCount | FCM Provider 쓰레드풀의 쓰레드 개수 : FCM Server 에 Notification 을 전송하기 위한 Connection 및 Send 의 처리 능력을 고려하여 쓰레드풀의 쓰레드 개수를 설정합니다. |
failOver | 모바일 알림 실패 시 후속 처리 유무 |
nextQueueServiceName | 모바일 알림 실패 시 후속 처리되는 큐 서비스 이름 |
UpdateNotificationQueueServiceName | 모바일 알림 결과 업데이트 큐 서비스 이름 |
<service name="GcmNotifierService"> <attribute name="FcmInfo"> #ANDROID_PRO#1 </attribute> <attribute name="NotificationAttributeCommonServiceName"> #NotificationAttributeCommonService </attribute> <attribute name="GcmConnectorName"> com.nexacro.xpush.service.notification.connector.GcmHttpConnector </attribute> <attribute name="GcmMessageQueueServiceName"> #GcmNotifiableQueueService </attribute> <attribute name="DbcpServiceName">#DbcpService</attribute> <attribute name="GcmProviderThreadPoolCount">1</attribute> <attribute name="failOver">true</attribute> <attribute name="nextQueueServiceName">#EtcQueue</attribute> <attribute name="UpdateNotificationQueueServiceName"> #UpdateNotificationQueueService </attribute> <depends>UpdateNotificationQueueService</depends> <depends>GcmNotifiableQueueService</depends> <depends>DbcpService</depends> <depends>NotificationAttributeCommonService</depends> </service>
NotificationQueueService
모바일 알림 큐 서비스
어트리뷰트 | 설명 |
---|---|
MaxCapacity | 큐 최대 용량(개수) |
<service name="NotificationQueueService"> <attribute name="MaxCapacity">-1</attribute> </service>
GcmNotifiableQueueService
FCM 모바일 알림 큐 서비스
어트리뷰트 | 설명 |
---|---|
MaxCapacity | 큐 최대 용량(개수) |
<service name="GcmNotifiableQueueService"> <attribute name="MaxCapacity">-1</attribute> </service>
ApnsNotifiableQueueService
Apns 알림 큐 서비스
어트리뷰트 | 설명 |
---|---|
MaxCapacity | 큐 최대 용량(개수) |
<service name="ApnsNotifiableQueueService"> <attribute name="MaxCapacity">-1</attribute> </service>
UpdateNotificationQueueService
모바일 알림 큐 서비스
어트리뷰트 | 설명 |
---|---|
MaxCapacity | 큐 최대 용량(개수) |
<service name="UpdateNotificationQueueService"> <attribute name="MaxCapacity">-1</attribute> </service>
UpdateNotificationQueueService
모바일 알림 큐 서비스
어트리뷰트 | 설명 |
---|---|
MaxCapacity | 큐 최대 용량(개수) |
<service name="UpdateNotificationQueueService"> <attribute name="MaxCapacity">-1</attribute> </service>
Log
로그 서비스
하단의 설명은 v2.8.9 이전 방식의 로그 서비스 (cf. v2.8.9 에서 Log4j2 방식으로 변경)
cf) v2.8.9 이상: $XPUSH_HOME/conf/log4j2.xml 에서 로그를 관리 (Log4j2 설정은 표준 방식을 따름)
cf) 로그 서비스 중 최하단의 X-PUSH 서버 상태를 모니터링하는 MonitorLogWriter 서비스는 v2.8.9 이상에서도 유지
XPUSH에서 로그는 jp.ossc.nimbus.service.log.Logger 인터페이스로 구현됩니다.
어트리뷰트 | 설명 |
---|---|
MessageRecordFactoryServiceName | 메시지 기록 팩토리 서비스 이름 |
DebugEnabled | Logger.debug() 로그의 출력 여부 |
SystemDebugEnabled | LogServiceMBean.SYSTEM_DEBUG_CATEGORY 카테고리 로깅을 수행할지 여부 |
SystemInfoEnabled | LogServiceMBean.SYSTEM_INFO_CATEGORY 카테고리 로깅을 수행할지 여부 |
SystemWarnEnabled | LogServiceMBean.SYSTEM_WARN_CATEGORY 카테고리 로깅을 수행할지 여부 |
SystemErrorEnabled | LogServiceMBean.SYSTEM_ERROR_CATEGORY 카테고리 로깅을 수행할지 여부 |
SystemFatalEnabled | LogServiceMBean.SYSTEM_FATAL_CATEGORY 카테고리 로깅을 수행할지 여부 |
CategoryServiceNames | 카테고리 서비스 이름 |
<service name="Log"> <attribute name="MessageRecordFactoryServiceName"> #MessageRecordFactory </attribute> <attribute name="DebugEnabled">true</attribute> <attribute name="SystemDebugEnabled">false</attribute> <attribute name="SystemInfoEnabled">false</attribute> <attribute name="SystemWarnEnabled">true</attribute> <attribute name="SystemErrorEnabled">true</attribute> <attribute name="SystemFatalEnabled">true</attribute> <attribute name="CategoryServiceNames"> #ConsoleLogger #FileLogger #LogDispatcher </attribute> ... </service>
MessageRecordFactory
메시지 기록 팩토리 서비스
어트리뷰트 | 설명 |
---|---|
MessageRecordClassName | 메시지 기록 클래스 이름 |
AllowOverrideMessage | Override된 메시지 허용 유무 |
MessageDefines | 메시지 로그 정의 - 로그레벨 = 범위, 카테고리 |
SecretMode | 비밀 문자가 포함 된 메시지의 문자 마스킹 여부 |
<service name="MessageRecordFactory"> <attribute name="MessageRecordClassName"> jp.ossc.nimbus.service.log.LogMessageRecordImpl </attribute> <attribute name="AllowOverrideMessage">true</attribute> <attribute name="MessageDefines"> DEBUG=@0,40,File:Console:UserLogProcessor TRACE=@0,30,File:Console:UserLogProcessor INFO=@0,20,File:Console:UserLogProcessor WARN=@0,10,File:Console:UserLogProcessor ERROR=@0,0,File:Console:UserLogProcessor </attribute> <attribute name="SecretMode">true</attribute> </service>
ConsoleLogger
콘솔에 표시되는 로그 메시지 설정 서비스
어트리뷰트 | 설명 |
---|---|
CategoryName | 카테고리 이름 |
PriorityRange | 로그 범위 |
MessageWriterServiceName | 메시지 writer 서비스 이름 |
WritableRecordFactoryServiceName | WritableRecordFactoryService 이름 |
ConsoleWritableRecordFactory
어트리뷰트 | 설명 |
---|---|
Format | 로그 포맷 |
DateFormat | 로그 날짜 포맷 |
<service name="ConsoleLogger"> <attribute name="CategoryName">Console</attribute> <attribute name="PriorityRange">0:40</attribute> <attribute name="MessageWriterServiceName">#ConsoleLogWriter</attribute> <attribute name="WritableRecordFactoryServiceName"> #ConsoleWritableRecordFactory </attribute> <depends>#ConsoleLogWriter</depends> <depends> <service name="ConsoleWritableRecordFactory"> <attribute name="Format">[%DATE%][%CODE%] %MESSAGE%</attribute> <attribute name="DateFormat">yyyy/MM/dd HH:mm:ss.SSS</attribute> </service> </depends> </service>
FileLogger
파일에 저장되는 로그 메시지 설정 서비스
어트리뷰트 | 설명 |
---|---|
CategoryName | 카테고리 이름 |
PriorityRange | 로그 범위 |
MessageWriterServiceName | 메시지 writer 서비스 이름 |
WritableRecordFactoryServiceName | WritableRecordFactoryService 이름 |
FileWritableRecordFactory
어트리뷰트 | 설명 |
---|---|
Format | 로그 포맷 |
DateFormat | 로그 날짜 포맷 |
<service name="FileLogger"> <attribute name="CategoryName">File</attribute> <attribute name="PriorityRange">0:40</attribute> <attribute name="MessageWriterServiceName">#FileLogWriter</attribute> <attribute name="WritableRecordFactoryServiceName"> #FileWritableRecordFactory </attribute> <depends>#FileLogWriter</depends> <depends> <service name="FileWritableRecordFactory"> <attribute name="Format">[%DATE%][%CODE%] %MESSAGE%</attribute> <attribute name="DateFormat">yyyy/MM/dd HH:mm:ss.SSS</attribute> </service> </depends> </service>
LogDispatcher
사용자 정의 로그 서비스
어트리뷰트 | 설명 |
---|---|
CategoryName | 카테고리 이름 |
PriorityRange | 로그 범위 |
MessageWriterServiceName | 메시지 writer 서비스 이름 |
WritableRecordFactoryServiceName | WritableRecordFactoryService 이름 |
LogFactory
어트리뷰트 | 설명 |
---|---|
Format | 로그 포맷 |
DateFormat | 로그 날짜 포맷 |
<service name="LogDispatcher"> <attribute name="CategoryName">UserLogProcessor</attribute> <attribute name="PriorityRange">0:20</attribute> <attribute name="MessageWriterServiceName">#ConsoleLogWriter</attribute> <attribute name="WritableRecordFactoryServiceName"> #LogFactory </attribute> <depends> <service name="LogFactory"> <attribute name="Format">[%DATE%][%CODE%] %MESSAGE%</attribute> <attribute name="DateFormat">yyyy/MM/dd HH:mm:ss.SSS</attribute> </service> </depends> </service>
FileLogWriter
로그 파일 설정 서비스
어트리뷰트 | 설명 |
---|---|
LogPath | 로그 위치 |
LogFile | 로그 파일 이름 |
DatePattern | 로그 파일 이름 날짜 패턴 ex) xpush.log.20190725 |
Encoding | 로그 파일 내용 인코딩 |
Append | 로그 파일 내용 Apeend 여부 |
BufferedIO | Buffered된 Stream IO 여부 |
<service name="FileLogWriter"> <attribute name="LogPath">log</attribute> <attribute name="LogFile">xpush.log</attribute> <attribute name="DatePattern">'.'yyyy-MM-dd</attribute> <attribute name="Encoding">utf-8</attribute> <attribute name="Append">true</attribute> <attribute name="BufferedIO">false</attribute> </service>
ConsoleLogWriter
로그 콘솔 설정 서비스
MonitorLogWriter
MonitorLogWriter 서비스는 v2.8.9 이상에서도 유지
XPUSH 모니터링 상태 로그 출력 서비스
어트리뷰트 | 설명 |
---|---|
IsRecord | 파일 기록 여부 |
LogPath | 로그 위치 |
LogFile | 로그 파일 이름 |
DatePattern | 로그 파일 이름 날짜 패턴 ex) xpush.log.20190725 |
Encoding | 로그 파일 내용 인코딩 |
Append | 로그 파일 내용 Apeend 여부 |
RecordingPeriod | 기록 주기 |
PushMonitorServiceName | PushMonitor 서비스 이름 |
<service name="MonitorLogWriter"> <attribute name="IsRecord">true</attribute> <attribute name="LogPath">log/status</attribute> <attribute name="LogFile">xpush.status</attribute> <attribute name="DatePattern">'.'yyyy-MM-dd</attribute> <attribute name="Encoding">utf-8</attribute> <attribute name="Append">true</attribute> <attribute name="RecordingPeriod">5000</attribute> <attribute name="PushMonitorServiceName">#PushMonitor</attribute> </service>