001/* 002 * (C) Copyright 2006-2015 Nuxeo SA (http://nuxeo.com/) and contributors. 003 * 004 * All rights reserved. This program and the accompanying materials 005 * are made available under the terms of the GNU Lesser General Public License 006 * (LGPL) version 2.1 which accompanies this distribution, and is available at 007 * http://www.gnu.org/licenses/lgpl-2.1.html 008 * 009 * This library is distributed in the hope that it will be useful, 010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 012 * Lesser General Public License for more details. 013 * 014 * Contributors: 015 * mguillaume 016 */ 017 018package org.nuxeo.launcher.info; 019 020import java.io.PrintWriter; 021import java.io.StringWriter; 022import java.io.Writer; 023import java.text.DateFormat; 024import java.util.ArrayList; 025import java.util.Date; 026import java.util.List; 027 028import org.apache.commons.logging.impl.SimpleLog; 029 030public class MessageInfoLogger { 031 032 private List<MessageInfo> messages = new ArrayList<>(); 033 034 public List<MessageInfo> getMessages() { 035 return messages; 036 } 037 038 public void printMessages() { 039 DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT); 040 for (MessageInfo message : messages) { 041 System.out.println("[" + dateFormat.format(message.time) + "] " + message.level + " " + message.message); 042 } 043 } 044 045 public void log(String msg, int level) { 046 MessageInfo message = new MessageInfo(); 047 message.time = new Date(); 048 message.level = level; 049 message.message = msg; 050 messages.add(message); 051 } 052 053 public void debug(Object... args) { 054 for (Object arg : args) { 055 if (arg instanceof String) { 056 debug((String) arg); 057 } else if (arg instanceof Throwable) { 058 Writer stringWriter = new StringWriter(); 059 PrintWriter stackWriter = new PrintWriter(stringWriter); 060 ((Throwable) arg).printStackTrace(stackWriter); 061 debug(stringWriter.toString()); 062 } else { 063 debug(arg.toString()); 064 } 065 } 066 } 067 068 public void debug(String msg) { 069 log(msg, SimpleLog.LOG_LEVEL_DEBUG); 070 } 071 072 public void info(Object... args) { 073 for (Object arg : args) { 074 if (arg instanceof String) { 075 info((String) arg); 076 } else if (arg instanceof Throwable) { 077 Writer stringWriter = new StringWriter(); 078 PrintWriter stackWriter = new PrintWriter(stringWriter); 079 ((Throwable) arg).printStackTrace(stackWriter); 080 info(stringWriter.toString()); 081 } else { 082 info(arg.toString()); 083 } 084 } 085 } 086 087 public void info(String msg) { 088 log(msg, SimpleLog.LOG_LEVEL_INFO); 089 } 090 091 public void warn(Object... args) { 092 for (Object arg : args) { 093 if (arg instanceof String) { 094 warn((String) arg); 095 } else if (arg instanceof Throwable) { 096 Writer stringWriter = new StringWriter(); 097 PrintWriter stackWriter = new PrintWriter(stringWriter); 098 ((Throwable) arg).printStackTrace(stackWriter); 099 warn(stringWriter.toString()); 100 } else { 101 warn(arg.toString()); 102 } 103 } 104 } 105 106 public void warn(String msg) { 107 log(msg, SimpleLog.LOG_LEVEL_WARN); 108 } 109 110 public void error(Object... args) { 111 for (Object arg : args) { 112 if (arg instanceof String) { 113 error((String) arg); 114 } else if (arg instanceof Throwable) { 115 Writer stringWriter = new StringWriter(); 116 PrintWriter stackWriter = new PrintWriter(stringWriter); 117 ((Throwable) arg).printStackTrace(stackWriter); 118 error(stringWriter.toString()); 119 } else { 120 error(arg.toString()); 121 } 122 } 123 } 124 125 public void error(String msg) { 126 log(msg, SimpleLog.LOG_LEVEL_ERROR); 127 } 128 129}