/* * Copyright 2013 Eediom Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.araqne.logdb.client; import java.util.Date; import java.util.HashMap; import java.util.Map; import org.araqne.api.DateFormat; /** * 로그 수집기 인스턴스의 상태 정보를 표현합니다. * * @author xeraph@eediom.com * */ public class LoggerInfo { private String factoryName; private String namespace; private String name; /** * @since 1.0.8 */ private boolean enabled; private String description; private boolean passive; private int interval; private String startTime; private String endTime; private String status; private Date lastStartAt; private Date lastRunAt; private Date lastLogAt; private long logCount; private long dropCount; private long updateCount; private long logVolume; private long dropVolume; private Map<String, String> configs = new HashMap<String, String>(); private Map<String, Object> states = new HashMap<String, Object>(); /** * 로그 수집기와 연관된 로그 수집기 유형의 이름을 반환합니다. * * @return 로그 수집기 유형의 이름 */ public String getFactoryName() { return factoryName; } /** * 로그 수집기와 연관된 로그 수집기 유형의 이름을 설정합니다. * * @param factoryName * 로그 수집기 유형의 이름 */ public void setFactoryName(String factoryName) { this.factoryName = factoryName; } /** * 로그 수집기의 완전한 이름을 반환합니다. * * @return 완전한 이름. 이름공간\이름 형식. */ public String getFullName() { return namespace + "\\" + name; } /** * 로그 수집기의 이름공간을 반환합니다. * * @return 이름공간. 로컬인 경우 local, 원격 장비인 경우 원격 장비의 식별자가 GUID로 설정됨. */ public String getNamespace() { return namespace; } /** * 로그 수집기의 이름공간을 설정합니다. * * @param namespace * 이름공간. 로컬인 경우 local, 원격 장비인 경우 원격 장비의 식별자가 GUID로 설정됨. */ public void setNamespace(String namespace) { this.namespace = namespace; } /** * 로그 수집기의 이름을 반환합니다. * * @return 이름 */ public String getName() { return name; } /** * 로그 수집기의 이름을 설정합니다. * * @param name * 이름 */ public void setName(String name) { this.name = name; } /** * 로거의 활성화 여부를 반환합니다. * * @since 1.0.8 * @return 활성화 여부 */ public boolean isEnabled() { return enabled; } /** * 로거의 활성화 여부를 설정합니다. * * @since 1.0.8 * @param enabled * 활성화 여부 */ public void setEnabled(boolean enabled) { this.enabled = enabled; } /** * 로그 수집기에 대한 설명을 반환합니다. * * @return 설명 */ public String getDescription() { return description; } /** * 로그 수집기에 대한 설명을 설정합니다. * * @param description * 설명 */ public void setDescription(String description) { this.description = description; } /** * 로그 수집기의 설정 목록을 반환합니다. * * @return 설정 목록 */ public Map<String, String> getConfigs() { return configs; } /** * 로그 수집기의 설정 목록을 설정합니다. 설정 키/값 쌍은 로그 수집기 유형의 설정 명세를 따릅니다. * * @param configs * 설정 목록 * @see LoggerFactoryInfo#getConfigSpecs() */ public void setConfigs(Map<String, String> configs) { this.configs = configs; } /** * 로그 수집기의 수집 상태를 반환합니다. * * @return 로그 수집기의 수집 상태 */ public Map<String, Object> getStates() { return states; } /** * 로그 수집기의 수집 상태를 설정합니다. * * @param states * 로그 수집기의 수집 상태 */ public void setStates(Map<String, Object> states) { this.states = states; } /** * 패시브 로그 수집기 여부를 반환합니다. * * @return 패시브인 경우 true, 액티브인 경우 false */ public boolean isPassive() { return passive; } /** * 패시브 로그 수집기 여부를 설정합니다. * * @param passive * 패시브인 경우 true, 액티브인 경우 false */ public void setPassive(boolean passive) { this.passive = passive; } /** * 밀리초 단위의 로그 수집 주기를 반환합니다. * * @return 로그 수집 주기 (밀리초) */ public int getInterval() { return interval; } /** * 밀리초 단위의 로그 수집 주기를 설정합니다. 패시브 로그 수집기의 경우 수집 주기를 0으로 지정합니다. * * @param interval * 로그 수집 주기 (밀리초) */ public void setInterval(int interval) { this.interval = interval; } /** * 수집 시작 시각을 반환합니다. 액티브 로거인 경우에만 설정이 유효합니다. * * @return HHmm 포맷의 수집 시작 시각 */ public String getStartTime() { return startTime; } /** * 수집 시작 시각을 설정합니다. 액티브 로거의 경우에만 설정이 유효합니다. * * @param startTime * 수집 시작 시각 (HHmm 포맷) */ public void setStartTime(String startTime) { this.startTime = startTime; } /** * 수집 종료 시각을 반환합니다. 액티브 로거인 경우에만 설정이 유효합니다. * * @return HHmm 포맷의 수집 시작 시각 */ public String getEndTime() { return endTime; } /** * 수집 종료 시각을 설정합니다. 액티브 로거의 경우에만 설정이 유효합니다. * * @param endTime * 수집 시작 시각 (HHmm 포맷) */ public void setEndTime(String endTime) { this.endTime = endTime; } /** * 로그 수집기 동작 상태를 반환합니다. * * @return 동작 중이면 running, 정지되어 있으면 stopped */ public String getStatus() { return status; } /** * 로그 수집기 동작 상태를 설정합니다. * * @param status * 동작 중이면 running, 정지되어 있으면 stopped */ public void setStatus(String status) { this.status = status; } /** * 로그 수집기를 마지막으로 시작시킨 시각을 반환합니다. * * @return 마지막 시작 시각, 시작시킨 적이 없는 경우 null을 반환. */ public Date getLastStartAt() { return lastStartAt; } /** * 로그 수집기를 마지막으로 시작시킨 시각을 설정합니다. * * @param lastStartAt * 마지막 시작 시각 */ public void setLastStartAt(Date lastStartAt) { this.lastStartAt = lastStartAt; } /** * 로그 수집기가 마지막으로 실행된 시각을 반환합니다. * * @return 마지막 실행 시각, 실행한 적이 없는 경우 null을 반환. */ public Date getLastRunAt() { return lastRunAt; } /** * 로그 수집기가 마지막으로 실행된 시각을 설정합니다. * * @param lastRunAt * 마지막 실행 시각 */ public void setLastRunAt(Date lastRunAt) { this.lastRunAt = lastRunAt; } /** * 로그 수집기가 수집한 마지막 로그의 시각을 반환합니다. 이 시각은 로그의 타임스탬프를 인식시킨 경우 로그프레소 서버의 시각과 * 관계없이 데이터에 기록된 시각이 표시됩니다. * * @return 마지막 로그의 시각 */ public Date getLastLogAt() { return lastLogAt; } /** * 로그 수집기가 수집한 마지막 로그의 시각을 설정합니다. * * @param lastLogAt * 마지막 로그의 시각, 로그를 수집한 적이 없으면 null을 반환. */ public void setLastLogAt(Date lastLogAt) { this.lastLogAt = lastLogAt; } /** * 수집한 누적 로그 건수를 반환합니다. * * @return 누적 로그 수집 건수 */ public long getLogCount() { return logCount; } /** * 수집한 누적 로그 볼륨을 반환합니다. * * @return 누적 로그 수집 건수 */ public long getLogVolume() { return logVolume; } /** * 수집한 누적 로그 건수를 설정합니다. * * @param logCount * 로그 수집 건수 (누적) */ public void setLogCount(long logCount) { this.logCount = logCount; } /** * 수집한 누적 로그 볼륨을 설정합니다. * * @param logCount * 로그 수집 건수 (누적) */ public void setLogVolume(long logVolume) { this.logVolume = logVolume; } /** * 버린 누적 로그 건수를 반환합니다. * * @return 버린 로그 건수 (누적) */ public long getDropCount() { return dropCount; } /** * 버린 로그 건수를 설정합니다. * * @param dropCount * 버린 로그 건수 (누적) */ public void setDropCount(long dropCount) { this.dropCount = dropCount; } /** * 버린 누적 로그 볼륨을 반환합니다. * * @return 버린 로그 건수 (누적) */ public long getDropVolume() { return dropVolume; } /** * 버린 로그 볼륨을 설정합니다. * * @param dropCount * 버린 로그 건수 (누적) */ public void setDropVolume(long dropVolume) { this.dropVolume = dropVolume; } /** * 로그 수집 상태 갱신 횟수를 반환합니다. HA 시 최신 버전을 확인하는 용도로 사용됩니다. * * @return 로그 수집 상태 갱신 횟수 */ public long getUpdateCount() { return updateCount; } /** * 로그 수집 상태 갱신 횟수를 설정합니다. * * @param updateCount * 로그 수집 상태 갱신 횟수 */ public void setUpdateCount(long updateCount) { this.updateCount = updateCount; } @Override public String toString() { String format = "yyyy-MM-dd HH:mm:ss"; String start = DateFormat.format(format, lastStartAt); String run = DateFormat.format(format, lastRunAt); String log = DateFormat.format(format, lastLogAt); String status = getStatus().toString().toLowerCase(); if (passive) status += " (passive)"; else status += " (interval=" + interval + "ms)"; String details = ""; if (configs != null && configs.size() > 0) details += ", configs=" + configs; if (states != null && states.size() > 0) details += ", states=" + states; return String.format( "name=%s, factory=%s, status=%s, log count=%d, log volume=%d, last start=%s, last run=%s, last log=%s" + details, getFullName(), factoryName, status, getLogCount(), getLogVolume(), start, run, log); } }