1 /**
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 */
18 package org.apache.hadoop.hbase.regionserver.wal;
19
20 import java.io.FileNotFoundException;
21 import java.io.IOException;
22 import java.io.PrintStream;
23 import java.util.ArrayList;
24 import java.util.Date;
25 import java.util.HashMap;
26 import java.util.List;
27 import java.util.Map;
28
29 import org.apache.commons.cli.CommandLine;
30 import org.apache.commons.cli.CommandLineParser;
31 import org.apache.commons.cli.HelpFormatter;
32 import org.apache.commons.cli.Options;
33 import org.apache.commons.cli.ParseException;
34 import org.apache.commons.cli.PosixParser;
35 import org.apache.hadoop.hbase.classification.InterfaceAudience;
36 import org.apache.hadoop.hbase.classification.InterfaceStability;
37 import org.apache.hadoop.conf.Configuration;
38 import org.apache.hadoop.fs.FileSystem;
39 import org.apache.hadoop.fs.Path;
40 import org.apache.hadoop.hbase.HBaseConfiguration;
41 import org.apache.hadoop.hbase.KeyValue;
42 import org.apache.hadoop.hbase.util.Bytes;
43 import org.apache.hadoop.hbase.util.FSUtils;
44 import org.apache.hadoop.hbase.HBaseInterfaceAudience;
45 import org.apache.hadoop.hbase.wal.WALPrettyPrinter;
46 import org.codehaus.jackson.map.ObjectMapper;
47
48 /**
49 * HLogPrettyPrinter prints the contents of a given HLog with a variety of
50 * options affecting formatting and extent of content.
51 *
52 * It targets two usage cases: pretty printing for ease of debugging directly by
53 * humans, and JSON output for consumption by monitoring and/or maintenance
54 * scripts.
55 *
56 * It can filter by row, region, or sequence id.
57 *
58 * It can also toggle output of values.
59 *
60 * @deprecated use the "hbase wal" command
61 */
62 @InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)
63 @InterfaceStability.Evolving
64 @Deprecated
65 public class HLogPrettyPrinter extends WALPrettyPrinter {
66
67 /**
68 * Basic constructor that simply initializes values to reasonable defaults.
69 */
70 public HLogPrettyPrinter() {
71 this(false, false, -1l, null, null, false, System.out);
72 }
73
74 /**
75 * Fully specified constructor.
76 *
77 * @param outputValues
78 * when true, enables output of values along with other log
79 * information
80 * @param outputJSON
81 * when true, enables output in JSON format rather than a
82 * "pretty string"
83 * @param sequence
84 * when nonnegative, serves as a filter; only log entries with this
85 * sequence id will be printed
86 * @param region
87 * when not null, serves as a filter; only log entries from this
88 * region will be printed
89 * @param row
90 * when not null, serves as a filter; only log entries from this row
91 * will be printed
92 * @param persistentOutput
93 * keeps a single list running for multiple files. if enabled, the
94 * endPersistentOutput() method must be used!
95 * @param out
96 * Specifies an alternative to stdout for the destination of this
97 * PrettyPrinter's output.
98 */
99 public HLogPrettyPrinter(boolean outputValues, boolean outputJSON,
100 long sequence, String region, String row, boolean persistentOutput,
101 PrintStream out) {
102 super(outputValues, outputJSON, sequence, region, row, persistentOutput, out);
103 }
104
105 public static void main(String[] args) throws IOException {
106 WALPrettyPrinter.main(args);
107 }
108
109 }