This may be a purely subjective question (if no organization has attempted to standardize this), but my team struggles with this more than you would think.
Fatal: The program is in an state that cannot be handled and must be terminated (automatically or by the user).
Error: The operation of the program failed in a way detectable by the user (the changes were not saved / a file could not be read), but the program still can work (try to load another file).
Warning: Something did not go as planed but the user did not notice it (a server did not answer a ping; perhaps when that server is needed it will cause an error/fatal)
Info: User actions / major program actions (file loaded, automatic backup stored).
Debug: Tracing information. What part of the program is running, which are the values of the parameters