1 /*
2  * Copyright (C) 2006 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 android.util;
18 
19 import android.compat.annotation.UnsupportedAppUsage;
20 import android.os.Build;
21 
22 /**
23  * @hide
24  */
25 public final class Slog {
26 
Slog()27     private Slog() {
28     }
29 
30     @UnsupportedAppUsage
v(String tag, String msg)31     public static int v(String tag, String msg) {
32         return Log.println_native(Log.LOG_ID_SYSTEM, Log.VERBOSE, tag, msg);
33     }
34 
v(String tag, String msg, Throwable tr)35     public static int v(String tag, String msg, Throwable tr) {
36         return Log.println_native(Log.LOG_ID_SYSTEM, Log.VERBOSE, tag,
37                 msg + '\n' + Log.getStackTraceString(tr));
38     }
39 
40     @UnsupportedAppUsage
d(String tag, String msg)41     public static int d(String tag, String msg) {
42         return Log.println_native(Log.LOG_ID_SYSTEM, Log.DEBUG, tag, msg);
43     }
44 
45     @UnsupportedAppUsage
d(String tag, String msg, Throwable tr)46     public static int d(String tag, String msg, Throwable tr) {
47         return Log.println_native(Log.LOG_ID_SYSTEM, Log.DEBUG, tag,
48                 msg + '\n' + Log.getStackTraceString(tr));
49     }
50 
51     @UnsupportedAppUsage
i(String tag, String msg)52     public static int i(String tag, String msg) {
53         return Log.println_native(Log.LOG_ID_SYSTEM, Log.INFO, tag, msg);
54     }
55 
i(String tag, String msg, Throwable tr)56     public static int i(String tag, String msg, Throwable tr) {
57         return Log.println_native(Log.LOG_ID_SYSTEM, Log.INFO, tag,
58                 msg + '\n' + Log.getStackTraceString(tr));
59     }
60 
61     @UnsupportedAppUsage
w(String tag, String msg)62     public static int w(String tag, String msg) {
63         return Log.println_native(Log.LOG_ID_SYSTEM, Log.WARN, tag, msg);
64     }
65 
66     @UnsupportedAppUsage
w(String tag, String msg, Throwable tr)67     public static int w(String tag, String msg, Throwable tr) {
68         return Log.println_native(Log.LOG_ID_SYSTEM, Log.WARN, tag,
69                 msg + '\n' + Log.getStackTraceString(tr));
70     }
71 
w(String tag, Throwable tr)72     public static int w(String tag, Throwable tr) {
73         return Log.println_native(Log.LOG_ID_SYSTEM, Log.WARN, tag, Log.getStackTraceString(tr));
74     }
75 
76     @UnsupportedAppUsage
e(String tag, String msg)77     public static int e(String tag, String msg) {
78         return Log.println_native(Log.LOG_ID_SYSTEM, Log.ERROR, tag, msg);
79     }
80 
81     @UnsupportedAppUsage
e(String tag, String msg, Throwable tr)82     public static int e(String tag, String msg, Throwable tr) {
83         return Log.println_native(Log.LOG_ID_SYSTEM, Log.ERROR, tag,
84                 msg + '\n' + Log.getStackTraceString(tr));
85     }
86 
87     /**
88      * Like {@link Log#wtf(String, String)}, but will never cause the caller to crash, and
89      * will always be handled asynchronously.  Primarily for use by coding running within
90      * the system process.
91      */
92     @UnsupportedAppUsage
wtf(String tag, String msg)93     public static int wtf(String tag, String msg) {
94         return Log.wtf(Log.LOG_ID_SYSTEM, tag, msg, null, false, true);
95     }
96 
97     /**
98      * Like {@link #wtf(String, String)}, but does not output anything to the log.
99      */
wtfQuiet(String tag, String msg)100     public static void wtfQuiet(String tag, String msg) {
101         Log.wtfQuiet(Log.LOG_ID_SYSTEM, tag, msg, true);
102     }
103 
104     /**
105      * Like {@link Log#wtfStack(String, String)}, but will never cause the caller to crash, and
106      * will always be handled asynchronously.  Primarily for use by coding running within
107      * the system process.
108      */
109     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
wtfStack(String tag, String msg)110     public static int wtfStack(String tag, String msg) {
111         return Log.wtf(Log.LOG_ID_SYSTEM, tag, msg, null, true, true);
112     }
113 
114     /**
115      * Like {@link Log#wtf(String, Throwable)}, but will never cause the caller to crash,
116      * and will always be handled asynchronously.  Primarily for use by coding running within
117      * the system process.
118      */
wtf(String tag, Throwable tr)119     public static int wtf(String tag, Throwable tr) {
120         return Log.wtf(Log.LOG_ID_SYSTEM, tag, tr.getMessage(), tr, false, true);
121     }
122 
123     /**
124      * Like {@link Log#wtf(String, String, Throwable)}, but will never cause the caller to crash,
125      * and will always be handled asynchronously.  Primarily for use by coding running within
126      * the system process.
127      */
128     @UnsupportedAppUsage
wtf(String tag, String msg, Throwable tr)129     public static int wtf(String tag, String msg, Throwable tr) {
130         return Log.wtf(Log.LOG_ID_SYSTEM, tag, msg, tr, false, true);
131     }
132 
133     @UnsupportedAppUsage
println(int priority, String tag, String msg)134     public static int println(int priority, String tag, String msg) {
135         return Log.println_native(Log.LOG_ID_SYSTEM, priority, tag, msg);
136     }
137 }
138 
139