When your husband screws up or is letting you down pretty consistently in an area, the general rule is to not beat him up about it (as much as you want to, I know).
Confront him, discuss how things can change for the better, be generous with your forgiveness and explain how you plan to support him as he matures and grows. Don’t let him off the hook or enable a weakness of his or a victim mentality. But don’t light your hair on fire either.
Here’s why: good guys who make mistakes or are weak in areas as husbands or dads know it too well, and are usually dealing with guilt and shame about it already. If you attack him, he’ll shut down, and that will never help him grow and change. So be redemptive in your correction, loving in your stance for righteousness, and very liberal in your expression of support and faith in him. Let him know how his behavior negatively effects you (and/or the kids), but do your best to communicate that as a fact that has the potential to change, not as a reality that he will never grow out of.
You’re partners, not enemies. The speed of his growth and maturity in many ways is directly proportionate to how you deal with his failures.
It’s best for everyone if you can deal with them with grace.