/**
   * Posts a log message to Loggly
   *
   * @param message message to be logged
   * @return {@code true} if successful; {@code false} otherwise
   */
  public boolean log(String message) {
    if (message == null) return false;

    boolean ok;
    try {
      ok = loggly.log(token, tags, new TypedString(message)).isOk();
    } catch (Exception e) {
      e.printStackTrace();
      ok = false;
    }
    return ok;
  }
  /**
   * Posts several log messages in bulk to Loggly
   *
   * @param messages messages to be logged
   * @return {@code true} if successful; {@code false} otherwise
   */
  public boolean logBulk(Collection<String> messages) {
    if (messages == null) return false;

    String parcel = joinStrings(messages);
    if (parcel.isEmpty()) return false;

    boolean ok;
    try {
      ok = loggly.logBulk(token, tags, new TypedString(parcel)).isOk();
    } catch (Exception e) {
      e.printStackTrace();
      ok = false;
    }
    return ok;
  }
  /**
   * Posts a log message asynchronously to Loggly
   *
   * @param message message to be logged
   * @param callback callback to be invoked on completion of the post
   */
  public void log(String message, final Callback callback) {
    if (message == null) return;

    loggly.log(
        token,
        tags,
        new TypedString(message),
        new retrofit.Callback<LogglyResponse>() {
          public void success(LogglyResponse logglyResponse, Response response) {
            callback.success();
          }

          public void failure(RetrofitError retrofitError) {
            callback.failure(retrofitError.getMessage());
          }
        });
  }
  /**
   * Posts several log messages in bulk to Loggly asynchronously
   *
   * @param messages messages to be logged
   * @param callback callback to be invoked on completion of the post
   */
  public void logBulk(Collection<String> messages, final Callback callback) {
    if (messages == null) return;

    String parcel = joinStrings(messages);
    if (parcel.isEmpty()) return;

    loggly.logBulk(
        token,
        tags,
        new TypedString(parcel),
        new retrofit.Callback<LogglyResponse>() {
          public void success(LogglyResponse logglyResponse, Response response) {
            callback.success();
          }

          public void failure(RetrofitError retrofitError) {
            callback.failure(retrofitError.getMessage());
          }
        });
  }