Look for lines containing warning/error/info strings instead of data.

def find_warnings(content):
    """Look for lines containing warning/error/info strings instead of data."""
    keywords = [k.lower() for k in [
        "WARNING", "Couldn't find device", "Configuration setting",
        "read failed", "Was device resized?", "Invalid argument",
        "leaked on lvs", "Checksum error", "is exported", "failed.",
        "Invalid metadata", "response failed", "unknown device",
        "duplicate", "not found", "Missing device", "Internal error",
        "Input/output error", "Incorrect metadata", "Cannot process volume",
        "No such file or directory", "Logging initialised", "changed sizes",
        "vsnprintf failed", "write failed", "correction failed",
        "Failed to write", "Couldn't read", "marked missing",
        "Attempt to close device", "Ignoring supplied major",
        "not match metadata"
    ]]
    for l in content:
        lower = l.strip().lower()
        # Avoid hitting keywords inside the data
        if not lower.startswith('lvm2'):
            if any(k in lower for k in keywords):
                yield l