diff --git a/tools/package/runtime/bin/onos-log-query b/tools/package/runtime/bin/onos-log-query
new file mode 100755
index 0000000..56ed544
--- /dev/null
+++ b/tools/package/runtime/bin/onos-log-query
@@ -0,0 +1,76 @@
+#!/bin/bash
+
+#
+# Copyright 2015-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# -----------------------------------------------------------------------------
+# Tool to stitch together ONOS logs collected via onos-diagniostics tool.
+# -----------------------------------------------------------------------------
+function usage {
+    echo "usage: onos-log-query [-n query-name] [-f from-time] [-t to-time] [-x] [node]" >&2
+    exit 1
+}
+
+name=query      # default name
+
+while getopts n:f:t:x?h o; do
+    case "$o" in
+        n) name="$OPTARG";;
+        f) from="$OPTARG";;
+        t) to="$OPTARG";;
+        x) nostt=1;;
+        *) usage;;
+    esac
+done
+
+let OPC=$OPTIND-1
+shift $OPC
+
+[ "$name" = "karaf" ] && echo "Name cannot be karaf" && usage
+
+function stitchLogs {
+    awk -v from="${from}" -v to="${to}" -v nostt=${nostt:-0} \
+        -v TS="[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2},[0-9]{3}" '
+        TS {
+            on = (from == "" || $1 >= from) && (to == "" || $1 <= to);
+            if (on) { print $0; next; }
+        }
+        { if (on && !nostt) { print $0; } }
+    ' FS='|' $(ls -r1 karaf.log*) > ${name}.log
+}
+
+function stitchNodeLogs {
+    pushd $1 &>/dev/null
+    stitchLogs
+    popd &>/dev/null
+}
+
+if [ $# -eq 1 -a -d "$1" ]; then
+    stitchNodeLogs $1 && cat $1/${name}.log
+elif [ $# -ge 1 ]; then
+    echo "No node directory for $1" >&2
+    usage
+elif ls karaf.log &>/dev/null; then
+    stitchLogs && cat ${name}.log
+elif ls */karaf.log &>/dev/null; then
+    for node in $(ls */karaf.log | cut -d/ -f1); do
+        stitchNodeLogs $node &
+    done
+    wait
+    awk '{ print FILENAME " | " $0; }' */${name}.log | \
+        sed "s:/${name}.log::" | sort -t\| -k2,2 > ${name}.log
+    cat ${name}.log
+fi
