1 /* 2 * Copyright (C) 2011 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.tradefed.log; 18 19 import com.android.ddmlib.Log.ILogOutput; 20 import com.android.ddmlib.Log.LogLevel; 21 22 import java.util.Map; 23 24 /** 25 * An interface for a {@link ILogOutput} singleton logger that multiplexes and manages different 26 * loggers. 27 */ 28 public interface ILogRegistry extends ILogOutput { 29 30 /** Events that are useful to be logged */ 31 public enum EventType { 32 DEVICE_CONNECTED, 33 DEVICE_CONNECTED_OFFLINE, 34 DEVICE_DISCONNECTED, 35 INVOCATION_START, 36 INVOCATION_END, 37 HEAP_MEMORY, 38 SHARD_POLLER_EARLY_TERMINATION, 39 MODULE_DEVICE_NOT_AVAILABLE, 40 UNEXPECTED_EXCEPTION, 41 } 42 43 /** 44 * Set the log level display for the global log 45 * 46 * @param logLevel the {@link LogLevel} to use 47 */ setGlobalLogDisplayLevel(LogLevel logLevel)48 public void setGlobalLogDisplayLevel(LogLevel logLevel); 49 50 /** 51 * Returns current log level display for the global log 52 * 53 * @return logLevel the {@link LogLevel} to use 54 */ getGlobalLogDisplayLevel()55 public LogLevel getGlobalLogDisplayLevel(); 56 57 /** 58 * Registers the logger as the instance to use for the current thread. 59 */ registerLogger(ILeveledLogOutput log)60 public void registerLogger(ILeveledLogOutput log); 61 62 /** 63 * Unregisters the current logger in effect for the current thread. 64 */ unregisterLogger()65 public void unregisterLogger(); 66 67 /** 68 * Dumps the entire contents of a {@link ILeveledLogOutput} logger to the global log. 69 * <p/> 70 * This is useful in scenarios where you know the logger's output won't be saved permanently, 71 * yet you want the contents to be saved somewhere and not lost. 72 * 73 * @param log 74 */ dumpToGlobalLog(ILeveledLogOutput log)75 public void dumpToGlobalLog(ILeveledLogOutput log); 76 77 /** 78 * Closes and removes all logs being managed by this LogRegistry. 79 */ closeAndRemoveAllLogs()80 public void closeAndRemoveAllLogs(); 81 82 /** Saves all the global loggers contents to tmp files. */ saveGlobalLog()83 public void saveGlobalLog(); 84 85 /** 86 * Call this method to log an event from a type with the associated information in the map. Time 87 * of the event is automatically added. 88 * 89 * @param logLevel the {@link LogLevel} to be printed. 90 * @param event the {@link ILogRegistry.EventType} of the event to log. 91 * @param args the map of arguments to be added to the log entry to get more details on the 92 * event. 93 */ logEvent(LogLevel logLevel, EventType event, Map<String, String> args)94 public void logEvent(LogLevel logLevel, EventType event, Map<String, String> args); 95 96 /** Diagnosis method to dump all logs to files. */ dumpLogs()97 public void dumpLogs(); 98 99 } 100