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.Collection; 23 import java.util.Map; 24 25 /** 26 * An interface for a {@link ILogOutput} singleton logger that multiplexes and manages different 27 * loggers. 28 */ 29 public interface ILogRegistry extends ILogOutput { 30 31 /** Events that are useful to be logged */ 32 public enum EventType { 33 DEVICE_CONNECTED, 34 DEVICE_CONNECTED_OFFLINE, 35 DEVICE_DISCONNECTED, 36 INVOCATION_START, 37 INVOCATION_END, 38 HEAP_MEMORY, 39 SHARD_POLLER_EARLY_TERMINATION, 40 MODULE_DEVICE_NOT_AVAILABLE, 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 * Set the log tags to display for the global log 52 */ setGlobalLogTagDisplay(Collection<String> logTagsDisplay)53 public void setGlobalLogTagDisplay(Collection<String> logTagsDisplay); 54 55 /** 56 * Returns current log level display for the global log 57 * 58 * @return logLevel the {@link LogLevel} to use 59 */ getGlobalLogDisplayLevel()60 public LogLevel getGlobalLogDisplayLevel(); 61 62 /** 63 * Registers the logger as the instance to use for the current thread. 64 */ registerLogger(ILeveledLogOutput log)65 public void registerLogger(ILeveledLogOutput log); 66 67 /** 68 * Unregisters the current logger in effect for the current thread. 69 */ unregisterLogger()70 public void unregisterLogger(); 71 72 /** 73 * Dumps the entire contents of a {@link ILeveledLogOutput} logger to the global log. 74 * <p/> 75 * This is useful in scenarios where you know the logger's output won't be saved permanently, 76 * yet you want the contents to be saved somewhere and not lost. 77 * 78 * @param log 79 */ dumpToGlobalLog(ILeveledLogOutput log)80 public void dumpToGlobalLog(ILeveledLogOutput log); 81 82 /** 83 * Closes and removes all logs being managed by this LogRegistry. 84 */ closeAndRemoveAllLogs()85 public void closeAndRemoveAllLogs(); 86 87 /** Saves all the global loggers contents to tmp files. */ saveGlobalLog()88 public void saveGlobalLog(); 89 90 /** 91 * Call this method to log an event from a type with the associated information in the map. Time 92 * of the event is automatically added. 93 * 94 * @param logLevel the {@link LogLevel} to be printed. 95 * @param event the {@link ILogRegistry.EventType} of the event to log. 96 * @param args the map of arguments to be added to the log entry to get more details on the 97 * event. 98 */ logEvent(LogLevel logLevel, EventType event, Map<String, String> args)99 public void logEvent(LogLevel logLevel, EventType event, Map<String, String> args); 100 101 /** Diagnosis method to dump all logs to files. */ dumpLogs()102 public void dumpLogs(); 103 104 } 105