/* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * Copyright (c) 2014, MPL CodeInside http://codeinside.ru */ package ru.codeinside.gws.stubs; import ru.codeinside.gws.api.ClientLog; import ru.codeinside.gws.api.ClientRequest; import ru.codeinside.gws.api.ClientResponse; import ru.codeinside.gws.api.LogService; import ru.codeinside.gws.api.ServerLog; import ru.codeinside.gws.api.ServerRequest; import ru.codeinside.gws.api.ServerResponse; import java.io.IOException; import java.io.OutputStream; import java.util.HashSet; import java.util.Set; import java.util.logging.Level; import java.util.logging.Logger; public class DebugLogService implements LogService { boolean serverLogEnabled = true; Set<String> enabledServers = new HashSet<String>(); private boolean logErrors; private String status; @Override public ClientLog createClientLog(long bid, String componentName, String processInstanceId, boolean isLogEnabled, boolean logErrors, String status, Set<String> remote) { return new DebugClientLog(bid, componentName, processInstanceId); } @Override public ServerLog createServerLog(String componentName, String remoteAddr) { return serverLogEnabled ? new DebugServerLog(componentName) : null; } @Override public void setServerLogEnabled(boolean enabled) { this.serverLogEnabled = enabled; } @Override public void setServerLogErrorsEnabled(boolean enabled) { this.logErrors = enabled; } @Override public void setServerLogStatus(String status) { this.status = status; } @Override public boolean isServerLogEnabled() { return serverLogEnabled; } @Override public boolean isServerLogErrorsEnabled() { return logErrors; } @Override public String getServerLogStatus() { return status; } @Override public void setServerLogEnabled(String componentName, boolean enabled) { if (enabled) { enabledServers.add(componentName); } else { enabledServers.remove(componentName); } } @Override public boolean isServerLogEnabled(String componentName) { return enabledServers.contains(componentName); } @Override public String getPathInfo() { return null; } @Override public void setIgnoreSet(Set<String> ip) { } final public static class DebugClientLog implements ClientLog { private final Logger logger; public DebugClientLog(long bid, String componentName, String processInstanceId) { logger = Logger.getLogger("ru.codeinside.gws.api.client." + componentName); logger.info("create for bid: " + bid + ", processInstanceId: " + processInstanceId); } @Override public void log(Throwable e) { logger.log(Level.INFO, "failure", e); } @Override public OutputStream getHttpOutStream() { // TODO: блочный вывод return new OutputStream() { @Override public void write(int b) throws IOException { logger.log(Level.INFO, "out: " + ((char) b)); } }; } @Override public OutputStream getHttpInStream() { // TODO: блочный вывод return new OutputStream() { @Override public void write(int b) throws IOException { logger.log(Level.INFO, "in: " + ((char) b)); } }; } @Override public void logRequest(ClientRequest request) { logger.log(Level.INFO, "request: " + request); } @Override public void logResponse(ClientResponse response) { logger.log(Level.INFO, "response: " + response); } @Override public void close() { } } final public static class DebugServerLog implements ServerLog { private final Logger logger; public DebugServerLog(String componentName) { logger = Logger.getLogger("ru.codeinside.gws.api.client." + componentName); } @Override public void log(Throwable e) { logger.log(Level.INFO, "filure", e); } @Override public OutputStream getHttpOutStream() { return new OutputStream() { @Override public void write(int b) throws IOException { logger.log(Level.INFO, "out: " + ((char) b)); } }; } @Override public OutputStream getHttpInStream() { return new OutputStream() { @Override public void write(int b) throws IOException { logger.log(Level.INFO, "in: " + ((char) b)); } }; } @Override public void logRequest(ServerRequest request) { logger.log(Level.INFO, "request: " + request); } @Override public void logResponse(ServerResponse response) { logger.log(Level.INFO, "response: " + response); } @Override public void close() { } } }