Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,12 @@ This will display only selected fields.

Choose between comma separated values map and JSON output.

### Initial range

`gtail --range [interval]`

Time range for initial fetch. Use "h" for hours, "m" for minutes, "s" or no identifier for seconds.

### Full usage instructions

`gtail --help`
Expand Down
41 changes: 35 additions & 6 deletions gtail/gtail.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,27 @@
from json import dumps

MAX_DELAY = 10
DEFAULT_RANGE="5m"
DEFAULT_CONFIG_PATHS = [".gtail", os.path.expanduser("~/.gtail")]

# converts human readable time interval into seconds
def convert_time_interval(value):
value = value.lower()
value_int = 0
if "h" in value:
value_parts = value.split("h", 1)
value_int+=int(value_parts[0])*3600
value=value_parts[1]
if "m" in value:
value_parts = value.split("m", 1)
value_int += int(value_parts[0]) * 60
value = value_parts[1]
value_parts = value.split("s", 1)
if value_parts[0] == "":
value_parts[0] = "0"
value_int += int(value_parts[0])
return value_int

# returns a bold version of text using ansi characters
def bold(text):
make_bold = "\033[1m"
Expand Down Expand Up @@ -63,11 +82,17 @@ def fetch_messages(server_config,
stream_ids = None,
last_message_id = None,
fields = None,
delay = MAX_DELAY):
delay = MAX_DELAY,
initial_range = None):
url = []
url.append(server_config.uri)
range = max(delay*5, 300)
url.append("/search/universal/relative?range={range}&limit=1000".format(range=range))
if last_message_id:
limit = "&limit={0}".format(1000)
range = max(delay * 5, 300)
else:
range=initial_range
limit=""
url.append("/search/universal/relative?range={range}{limit}".format(range=range, limit=limit))

# query terms
if query:
Expand Down Expand Up @@ -127,10 +152,10 @@ def print_message(message, streams=None, fields=None, format="json"):
for field in fields:
if field != "_id" and field in message:
count += 1
s[field] = message[field]
s[field] = str(message[field])
else:
if "timestamp" in message:
s["timestamp"] = message["timestamp"]
s["timestamp"] = str(message["timestamp"])
if streams and "streams" in message:
stream_ids = message["streams"]
stream_names = []
Expand Down Expand Up @@ -262,6 +287,9 @@ def main():
parser.add_argument("--delay", dest="delay",
type=int, default=MAX_DELAY,
help="Delay between Rest API calls (seconds)")
parser.add_argument("--range", dest="range",
type=str, default=DEFAULT_RANGE,
help="Time range for initial fetch")
parser.add_argument("--config", dest="config_paths",
nargs="+",
help="Config files. Default: " + ", ".join(DEFAULT_CONFIG_PATHS))
Expand Down Expand Up @@ -327,7 +355,8 @@ def main():
stream_ids = stream_ids,
last_message_id = last_message_id,
fields=fields,
delay=args.delay)
delay=args.delay,
initial_range=convert_time_interval(args.range))
except Exception as e:
print e
time.sleep(args.delay)
Expand Down